diff --git a/.vscode/cspell.json b/.vscode/cspell.json index c4df5907d503..ce4575ee5e78 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -141,6 +141,7 @@ "sdk/core/azure-core-test/**", "sdk/cosmos/azure-cosmos-encryption/**", "sdk/cosmos/azure-cosmos-spark_3_2-12/**", + "sdk/cosmos/dev.md", "sdk/spring/azure-spring-data-cosmos/**", "sdk/cosmos/azure-cosmos-kafka-connect/**", "sdk/deviceupdate/azure-iot-deviceupdate/**", @@ -162,6 +163,7 @@ "sdk/keyvault/azure-security-keyvault-secrets/**", "sdk/keyvault/azure-security-test-keyvault-jca/**", "sdk/keyvault/test-resources.json", + "sdk/keyvault/TROUBLESHOOTING.md", "sdk/formrecognizer/azure-ai-formrecognizer/**", "sdk/core/azure-core/**", "sdk/documentintelligence/azure-ai-documentintelligence/**", @@ -325,6 +327,7 @@ "Intellij", "iotcentral", "ipconfiguration", + "lrgrwrks", "Iscsi", "jacksonavro", "jacoco", @@ -969,11 +972,13 @@ "Milli", "qpid", "unretriable" - ] + ] }, { "filename": "sdk/spring/scripts/**", "words": [ + "agroal", + "alluxio", "antlr", "arquillian", "aspectj", @@ -982,18 +987,28 @@ "aspectjweaver", "assertj", "astbuilder", + "asyncer", + "athenz", "atomikos", "awaitility", "awspring", + "bcfips", "Borca", "brotli", "bson", "cbor", + "chromadb", + "cockroachdb", "codehaus", "collectd", + "crac", + "cratedb", + "cyclonedx", "datastax", "dbcp", + "debezium", "deser", + "dynalite", "dynatrace", "ecwid", "ehcache", @@ -1001,18 +1016,26 @@ "fcgi", "flywaydb", "gcloud", + "gimap", + "ginq", "groovysh", "guice", "Hikari", "hikaricp", + "hivemq", + "hocon", + "hornetq", "hppc", + "hqclient", "hsqldb", "humio", "hystrix", "inmemory", "infinispan", + "informix", "integ", "iostreams", + "istack", "istio", "itest", "itests", @@ -1024,6 +1047,8 @@ "jaxrs", "jaxws", "jcache", + "jcloud", + "jclouds", "jdbi", "jdom", "jgit", @@ -1033,8 +1058,10 @@ "johnzon", "jooq", "jpamodelgen", + "jspc", "jstl", "jtds", + "jvnet", "kahadb", "kairos", "karaf", @@ -1042,28 +1069,43 @@ "kotlinx", "kqueue", "kryo", + "kustomize", "ldif", "leveldb", "liquibase", + "milvus", + "minio", "mockmvc", + "moshi", "moxy", "mqtt", "mrbean", "mssql", + "mssqlserver", "mxab", "nekohtml", "nosql", "ocsp", "ojdbc", "okcurl", + "okio", + "ollama", + "openfga", + "openmldb", "opentsdb", "orai", + "orientdb", "osdt", "osgi", "otel", "otlp", "pcollections", "proxool", + "qdrant", + "qpack", + "quarkus", + "questdb", + "quic", "rabbitmq", "reactivex", "remoting", @@ -1081,26 +1123,61 @@ "specto", "squareup", "statsd", + "stax", + "staxex", "stree", + "sybasease", "tcnative", "tekton", "testng", + "tidb", "tmatesoft", + "toxiproxy", + "trino", "trogdor", "txwc", "uberjar", "ultraq", "unboundid", + "vavr", "vertx", "vibur", "wadl", + "weaviate", "webmvc", "xerial", "xmpp", "xsom", + "yasson", + "yugabytedb", "zaxxer" ] }, + { + "filename": "sdk/spring/**.md", + "words": [ + "Dcheckstyle", + "Dcodesnippet", + "Djacoco", + "Dparallel", + "Drevapi", + "Dskip", + "Dspotbugs", + "Pdev" + ] + }, + { + "filename": "sdk/spring/**/*.xml", + "words": [ + "failondeprecatedstatus" + ] + }, + { + "filename": "sdk/spring/**.yml", + "words": [ + "failondeprecatedstatus" + ] + }, { "filename": "sdk/spring/**", "words": [ @@ -1143,21 +1220,15 @@ "VCAP", "xiada", "yiliu", - "usgovcloudapi" + "usgovcloudapi", + "Pnative", + "Djava" ] }, { - "filename": "sdk/spring/**.md", + "filename": "sdk/spring/spring-cloud-azure-starter-monitor/**.md", "words": [ - "Dcheckstyle", - "Dcodesnippet", - "Djacoco", - "Dparallel", - "Drevapi", - "Dskip", - "Dspotbugs", - "Pdev", - "Djava" + "Djava" ] }, { diff --git a/common/perf-test-core/pom.xml b/common/perf-test-core/pom.xml index 9eb195393254..a01db7562270 100644 --- a/common/perf-test-core/pom.xml +++ b/common/perf-test-core/pom.xml @@ -53,12 +53,12 @@ - com.fasterxml.jackson.core:jackson-databind:[2.13.5] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] com.beust:jcommander:[1.82] - io.projectreactor:reactor-core:[3.4.38] + io.projectreactor:reactor-core:[3.6.6] io.vertx:vertx-codegen:[4.5.8] @@ -72,7 +72,7 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.beust @@ -108,19 +108,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/common/smoke-tests/pom.xml b/common/smoke-tests/pom.xml index 57e630f54129..77cec1a4c510 100644 --- a/common/smoke-tests/pom.xml +++ b/common/smoke-tests/pom.xml @@ -154,7 +154,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 diff --git a/eng/bomgenerator/pom.xml b/eng/bomgenerator/pom.xml index 743f6d170309..1969812e9c7b 100644 --- a/eng/bomgenerator/pom.xml +++ b/eng/bomgenerator/pom.xml @@ -37,7 +37,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 diff --git a/eng/code-quality-reports/pom.xml b/eng/code-quality-reports/pom.xml index 1297b297cae7..61c7c015c991 100755 --- a/eng/code-quality-reports/pom.xml +++ b/eng/code-quality-reports/pom.xml @@ -94,21 +94,21 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml index ccf681b448f8..39e033caed5e 100755 --- a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml +++ b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml @@ -343,6 +343,13 @@ the main ServiceBusClientBuilder. --> + + + + + + + @@ -370,6 +377,7 @@ the main ServiceBusClientBuilder. --> + @@ -397,11 +405,11 @@ the main ServiceBusClientBuilder. --> - - + + diff --git a/eng/code-quality-reports/src/main/resources/revapi/revapi.json b/eng/code-quality-reports/src/main/resources/revapi/revapi.json index 1f45584be3b7..a8a4d8aea9c9 100644 --- a/eng/code-quality-reports/src/main/resources/revapi/revapi.json +++ b/eng/code-quality-reports/src/main/resources/revapi/revapi.json @@ -47,6 +47,13 @@ "configuration": { "ignore": true, "differences": [ + { + "regex": true, + "code": "java.class.nonPublicPartOfAPI", + "new": "(class|interface) org\\.apache\\.http\\.impl\\.conn\\.CPoolEntry", + "exampleUseChainInNewApi": ".*org\\.apache\\.http\\.HttpClientConnection.*", + "justification": "We allow this in org.apache.http.HttpClientConnection>" + }, { "regex": true, "code": "java.class.nonPublicPartOfAPI", @@ -163,9 +170,85 @@ { "regex": true, "code": "java\\.method\\.removed", - "old": "method void com\\.azure\\.spring\\.cloud\\.autoconfigure\\.jms\\.properties\\.AzureServiceBusJmsProperties::(setPassword|setRemoteUrl|setUsername)\\(java\\.lang\\.String\\)", + "old": "method void com\\.azure\\.spring\\.cloud\\.autoconfigure\\.jms\\.properties\\.AzureServiceBusJmsProperties::(setPassword|setRemoteUrl|setUsername)\\(java\\.lang\\.String\\)" + }, + { + "code": "java.method.added", + "new": "method void com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cOidcLoginConfigurer::(org.springframework.security.web.authentication.logout.LogoutSuccessHandler, org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestResolver, org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient, org.springframework.boot.web.client.RestTemplateBuilder)", + "justification": "New method added to fix a bug." + }, + { + "code": "java.method.removed", + "old": "method java.lang.String com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties::getPassword()", + "justification": "Remove some meaningless jms properties" + }, + { + "code": "java.method.removed", + "old": "method java.lang.String com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties::getRemoteUrl()", + "justification": "Remove some meaningless jms properties" + }, + { + "code": "java.method.removed", + "old": "method java.lang.String com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties::getUsername()", + "justification": "Remove some meaningless jms properties" + }, + { + "code": "java.method.removed", + "old": "method void com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties::setPassword(java.lang.String)", "justification": "Remove some meaningless jms properties" }, + { + "code": "java.method.removed", + "old": "method void com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties::setRemoteUrl(java.lang.String)", + "justification": "Remove some meaningless jms properties" + }, + { + "code": "java.method.removed", + "old": "method void com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties::setUsername(java.lang.String)", + "justification": "Remove some meaningless jms properties" + }, + { + "regex": true, + "code": "java.method.numberOfParametersChanged", + "old": "method void com\\.azure\\.spring\\.cloud\\.config\\.stores\\..*", + "justification": "Not a public api" + }, + { + "regex": true, + "code": "java.method.removed", + "old": "method com.azure.spring.cloud.config.resource.ConnectionPool com.azure.spring.cloud.config.AppConfigurationBootstrapConfiguration::initConnectionString(com.azure.spring.cloud.config.properties.AppConfigurationProperties)", + "justification": "Not a public api" + }, + { + "regex": true, + "code": "java.class.removed", + "old": "class com\\.azure\\.spring\\.cloud\\.config\\.resource\\.ConnectionPool", + "justification": "Not a public api" + }, + { + "regex": true, + "code": "java.class.removed", + "old": "class com\\.azure\\.spring\\.cloud\\.config\\.resource\\.Connection", + "justification": "Not a public api" + }, + { + "regex": true, + "code": "java.class.removed", + "old": "class com.azure.spring.cloud.config.stores.ClientStore", + "justification": "Not a public api" + }, + { + "ignore": true, + "code": "java.class.externalClassExposedInAPI", + "new": "interface com.azure.spring.cloud.config.AppConfigurationRefresh", + "justification": "Thi isn't an external class" + }, + { + "regex": true, + "code": "java\\.class\\.externalClassExposedInAPI", + "new": "(interface|class|enum) com\\.mysql\\.cj\\..*", + "justification": "Mysql driver classes are allowed to be exposed by dependencies using them." + }, { "code": "java.method.addedToInterface", "new": "method void com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner::provisionQueue(java.lang.String, java.lang.String, com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties)", @@ -331,6 +414,17 @@ "new": "class com.azure.spring.cloud.autoconfigure.aad.configuration.(AadResourceServerConfiguration.DefaultAadResourceServerWebSecurityConfigurerAdapter|AadWebApplicationConfiguration.DefaultAadWebSecurityConfigurerAdapter)", "justification": "Element newly annotated with 'org.springframework.boot.autoconfigure.security.ConditionalOnDefaultWebSecurity" }, + { + "code": "java.method.addedToInterface", + "new": "method void com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner::provisionQueue(java.lang.String, java.lang.String, com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties)", + "justification": "New method added to support more properties." + }, + { + "regex": true, + "code": "java.class.externalClassExposedInAPI", + "new": "class com.azure.spring.cloud.stream.binder.servicebus.core.properties.(ServiceBusProducerProperties|ServiceBusConsumerProperties)", + "justification": "Support new properties." + }, { "regex": true, "code": "java.field.enumConstantOrderChanged", @@ -363,12 +457,62 @@ "new": "class com.azure.cosmos.models.ChangeFeedProcessorItem", "justification": "Modifies the type of changeFeedMetaData from ChangeFeedMetaData to JsonNode." }, + { + "code" : "java.field.removed", + "old" : "field com.mysql.cj.conf.PropertyKey.ociConfigProfile", + "justification" : "Fix field removed." + }, + { + "code" : "java.method.addedToInterface", + "new" : "method int com.mysql.cj.protocol.ServerSession::getOldStatusFlags()", + "justification" : "Method was added to an interface." + }, + { + "code" : "java.method.addedToInterface", + "new" : "method void com.mysql.cj.protocol.ServerSession::setOldStatusFlags(int)", + "justification" : "Method was added to an interface." + }, + { + "code" : "java.method.removed", + "old" : "method com.azure.core.credential.TokenRequestContext com.azure.core.credential.TokenRequestContext::setCaeEnabled(boolean)", + "justification" : "Method was removed." + }, + { + "code" : "java.method.returnTypeTypeParametersChanged", + "old" : "method reactor.core.publisher.Mono com.azure.security.attestation.AttestationAsyncClient::attestTpm(java.lang.String)", + "new" : "method reactor.core.publisher.Mono com.azure.security.attestation.AttestationAsyncClient::attestTpm(com.azure.core.util.BinaryData)", + "justification" : "return type changed type parameter." + }, + { + "code" : "java.method.parameterTypeChanged", + "old" : "parameter reactor.core.publisher.Mono com.azure.security.attestation.AttestationAsyncClient::attestTpm(===java.lang.String===)", + "new" : "parameter reactor.core.publisher.Mono com.azure.security.attestation.AttestationAsyncClient::attestTpm(===com.azure.core.util.BinaryData===)", + "justification" : "The type of the parameter changed from 'java.lang.String' to 'com.azure.core.util.BinaryData'." + }, { "code": "java.annotation.added", "old": "method com.azure.cosmos.CosmosDiagnosticsContext com.azure.cosmos.CosmosDiagnostics::getDiagnosticsContext()", "new": "method com.azure.cosmos.CosmosDiagnosticsContext com.azure.cosmos.CosmosDiagnostics::getDiagnosticsContext()", "justification": "Ignore CosmosDiagnosticsContext in CosmosDiagnostics to avoid stackoverflow error." }, + { + "code" : "java.method.returnTypeTypeParametersChanged", + "old" : "method reactor.core.publisher.Mono> com.azure.security.attestation.AttestationAsyncClient::attestTpmWithResponse(java.lang.String)", + "new" : "method reactor.core.publisher.Mono> com.azure.security.attestation.AttestationAsyncClient::attestTpmWithResponse(com.azure.core.util.BinaryData)", + "justification" : "return type changed type parameter." + }, + { + "code" : "java.method.parameterTypeChanged", + "old" : "parameter reactor.core.publisher.Mono> com.azure.security.attestation.AttestationAsyncClient::attestTpmWithResponse(===java.lang.String===)", + "new" : "parameter reactor.core.publisher.Mono> com.azure.security.attestation.AttestationAsyncClient::attestTpmWithResponse(===com.azure.core.util.BinaryData===)", + "justification" : "The type of the parameter changed from 'java.lang.String' to 'com.azure.core.util.BinaryData'." + }, + { + "code": "java.method.returnTypeChanged", + "old": "method java.lang.String com.azure.security.attestation.AttestationClient::attestTpm(java.lang.String)", + "new": "method com.azure.security.attestation.models.TpmAttestationResult com.azure.security.attestation.AttestationClient::attestTpm(com.azure.core.util.BinaryData)", + "justification": "The return type changed from 'java.lang.String' to 'com.azure.security.attestation.models.TpmAttestationResult'." + }, { "regex": true, "code": "java\\.annotation\\.added", @@ -409,6 +553,24 @@ "new": "field com.azure.data.schemaregistry.SchemaRegistryVersion.V2022_10", "justification": "Another version of Schema Registry API released." }, + { + "code" : "java.method.parameterTypeChanged", + "old" : "parameter java.lang.String com.azure.security.attestation.AttestationClient::attestTpm(===java.lang.String===)", + "new" : "parameter com.azure.security.attestation.models.TpmAttestationResult com.azure.security.attestation.AttestationClient::attestTpm(===com.azure.core.util.BinaryData===)", + "justification" : "The type of the parameter changed from 'java.lang.String' to 'com.azure.core.util.BinaryData'." + }, + { + "code" : "java.method.returnTypeTypeParametersChanged", + "old" : "method com.azure.core.http.rest.Response com.azure.security.attestation.AttestationClient::attestTpmWithResponse(java.lang.String, com.azure.core.util.Context)", + "new" : "method com.azure.core.http.rest.Response com.azure.security.attestation.AttestationClient::attestTpmWithResponse(com.azure.core.util.BinaryData, com.azure.core.util.Context)", + "justification" : "return type changed type parameter." + }, + { + "code" : "java.method.parameterTypeChanged", + "old" : "parameter com.azure.core.http.rest.Response com.azure.security.attestation.AttestationClient::attestTpmWithResponse(===java.lang.String===, com.azure.core.util.Context)", + "new" : "parameter com.azure.core.http.rest.Response com.azure.security.attestation.AttestationClient::attestTpmWithResponse(===com.azure.core.util.BinaryData===, com.azure.core.util.Context)", + "justification" : "The type of the parameter changed from 'java.lang.String' to 'com.azure.core.util.BinaryData'." + }, { "regex": true, "ignore": true, diff --git a/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml b/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml index 81bd9109b63c..b432569df5c2 100644 --- a/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml +++ b/eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml @@ -1999,13 +1999,13 @@ - + - + @@ -2028,6 +2028,18 @@ + + + + + + + + + + + + diff --git a/eng/pipelines/templates/stages/cosmos-emulator-matrix.json b/eng/pipelines/templates/stages/cosmos-emulator-matrix.json index e51b07a07d7b..21a437cf6f0d 100644 --- a/eng/pipelines/templates/stages/cosmos-emulator-matrix.json +++ b/eng/pipelines/templates/stages/cosmos-emulator-matrix.json @@ -18,19 +18,6 @@ "JavaTestVersion": "1.17", "AdditionalArgs": "-DargLine=\"-DACCOUNT_HOST=https://localhost:8081/ -DCOSMOS.AZURE_COSMOS_DISABLE_NON_STREAMING_ORDER_BY=true\"" }, - "Spring Emulator Only Integration Tests - Java 8": { - "ProfileFlag": "-Pintegration-test-emulator", - "JavaTestVersion": "1.8", - "ACCOUNT_HOST": "https://localhost:8081/", - "ACCOUNT_KEY": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", - "SECONDARY_ACCOUNT_KEY": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", - "NEW_ACCOUNT_HOST": "https://localhost:8081/", - "NEW_ACCOUNT_KEY": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", - "NEW_SECONDARY_ACCOUNT_KEY": "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", - "TestFromSource": true, - "AdditionalArgs": "-Dspring-e2e -DargLine=-DACCOUNT_HOST=https://localhost:8081/ -DCOSMOS.AZURE_COSMOS_DISABLE_NON_STREAMING_ORDER_BY=true", - "Language": "Spring" - }, "Spring Emulator Only Integration Tests - Java 17": { "ProfileFlag": "-Pintegration-test-emulator", "JavaTestVersion": "1.17", diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index 726a2395080f..84e13165665e 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -1,30 +1,31 @@ # To avoid dependency conflicts between SDK and Spring, when modifying or adding dependencies, -# make sure the version is same to sdk/spring/scripts/spring_boot_2.7.18_managed_external_dependencies.txt -# If your version is different from sdk/spring/scripts/spring_boot_2.7.18_managed_external_dependencies.txt, +# make sure the version is same to sdk/spring/scripts/spring_boot_3.3.0_managed_external_dependencies.txt +# If your version is different from sdk/spring/scripts/spring_boot_3.3.0_managed_external_dependencies.txt, # please discuss with Spring Integration team members: # @rujche (rujche), @saragluna (xiada), @yiliuTo (yiliu6), @backwind1233 (zhihaoguo). # Thanks. # Format; # groupId:artifactId;dependency-version -ch.qos.logback:logback-classic;1.3.14 +ch.qos.logback:logback-classic;1.5.6 com.azure.tools:azure-autorest-customization;1.0.0-beta.8 -com.fasterxml.jackson.core:jackson-annotations;2.13.5 -com.fasterxml.jackson.core:jackson-core;2.13.5 -com.fasterxml.jackson.core:jackson-databind;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-avro;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.13.5 -com.fasterxml.jackson.module:jackson-module-parameter-names;2.13.5 -com.fasterxml.jackson.module:jackson-module-scala_2.12;2.13.5 +com.fasterxml.jackson.core:jackson-annotations;2.17.1 +com.fasterxml.jackson.core:jackson-core;2.17.1 +com.fasterxml.jackson.core:jackson-databind;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-avro;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.17.1 +com.fasterxml.jackson.module:jackson-module-parameter-names;2.17.1 +com.fasterxml.jackson.module:jackson-module-scala_2.12;2.17.1 +com.fasterxml.jackson.module:jackson-module-afterburner;2.17.1 com.fasterxml.woodstox:woodstox-core;6.4.0 com.github.spotbugs:spotbugs;4.8.3 com.github.spotbugs:spotbugs-annotations;4.8.3 com.github.spotbugs:spotbugs-maven-plugin;4.8.2.0 com.google.code.gson:gson;2.10.1 com.google.guava:guava;33.1.0-jre -com.h2database:h2;2.2.220 +com.h2database:h2;2.2.224 com.h3xstream.findsecbugs:findsecbugs-plugin;1.9.0 com.knuddels:jtokkit;1.0.0 com.microsoft.azure:applicationinsights-core;3.4.1 @@ -43,21 +44,21 @@ com.microsoft.azure:qpid-proton-j-extensions;1.2.5 com.microsoft.azure.sdk.iot:iot-service-client;1.30.0 com.microsoft.rest:client-runtime;1.7.4 com.microsoft.rest.v2:client-runtime;2.1.1 -com.microsoft.sqlserver:mssql-jdbc;10.2.3.jre8 +com.microsoft.sqlserver:mssql-jdbc;12.6.1.jre11 com.microsoft.azure:spring-data-cosmosdb;2.3.0 com.microsoft.azure:azure-functions-maven-plugin;1.30.0 com.microsoft.azure.functions:azure-functions-java-library;2.2.0 -com.mysql:mysql-connector-j;8.0.33 +com.mysql:mysql-connector-j;8.3.0 com.squareup.okhttp3:mockwebserver;4.12.0 com.squareup.okhttp3:okhttp;4.12.0 -commons-codec:commons-codec;1.15 +commons-codec:commons-codec;1.16.1 commons-net:commons-net;3.9.0 io.cloudevents:cloudevents-api;2.2.0 io.cloudevents:cloudevents-core;2.2.0 io.fabric8:kubernetes-client;6.12.1 -io.micrometer:micrometer-core;1.9.17 -io.micrometer:micrometer-registry-azure-monitor;1.9.17 -io.micrometer:micrometer-registry-graphite;1.9.17 +io.micrometer:micrometer-core;1.13.0 +io.micrometer:micrometer-registry-azure-monitor;1.13.0 +io.micrometer:micrometer-registry-graphite;1.13.0 io.netty:netty-buffer;4.1.110.Final io.netty:netty-common;4.1.110.Final io.netty:netty-codec;4.1.110.Final @@ -71,13 +72,13 @@ io.netty:netty-tcnative-boringssl-static;2.0.65.Final io.netty:netty-transport-native-epoll;4.1.110.Final io.netty:netty-transport-native-unix-common;4.1.110.Final io.netty:netty-transport-native-kqueue;4.1.110.Final -io.projectreactor.netty:reactor-netty;1.0.45 -io.projectreactor.netty:reactor-netty-http;1.0.45 -io.projectreactor:reactor-core;3.4.38 +io.projectreactor.netty:reactor-netty;1.1.19 +io.projectreactor.netty:reactor-netty-http;1.1.19 +io.projectreactor:reactor-core;3.6.6 io.vertx:vertx-codegen;4.5.8 io.vertx:vertx-core;4.5.8 io.vertx:vertx-reactive-streams;4.5.8 -jakarta.validation:jakarta.validation-api;2.0.2 +jakarta.validation:jakarta.validation-api;3.0.2 javax.annotation:javax.annotation-api;1.3.2 javax.json:javax.json-api;1.1.4 javax.servlet:javax.servlet-api;4.0.1 @@ -85,106 +86,105 @@ javax.websocket:javax.websocket-api;1.1 org.apache.commons:commons-compress;1.26.0 org.apache.avro:avro;1.11.3 org.apache.avro:avro-maven-plugin;1.11.3 -org.apache.commons:commons-lang3;3.12.0 -org.apache.groovy:groovy;4.0.15 +org.apache.commons:commons-lang3;3.14.0 +org.apache.groovy:groovy;4.0.21 org.apache.httpcomponents:httpclient;4.5.14 -org.apache.kafka:kafka-clients;3.1.2 -org.apache.logging.log4j:log4j-api;2.17.2 -org.apache.logging.log4j:log4j-core;2.17.2 -org.apache.logging.log4j:log4j-slf4j-impl;2.17.2 +org.apache.kafka:kafka-clients;3.7.0 +org.apache.logging.log4j:log4j-api;2.23.1 +org.apache.logging.log4j:log4j-core;2.23.1 +org.apache.logging.log4j:log4j-slf4j-impl;2.23.1 org.apache.maven:maven-core;3.9.6 org.apache.maven.archetype:archetype-packaging;3.2.1 org.apache.maven.plugins:maven-archetype-plugin;3.2.1 org.apache.maven.plugins:maven-gpg-plugin;3.2.2 org.apache.qpid:proton-j;0.34.1 +org.apache.qpid:qpid-jms-client;2.0.0 org.apache.tinkerpop:gremlin-driver;3.2.4 org.asynchttpclient:async-http-client;2.12.1 org.codehaus.gmavenplus:gmavenplus-plugin;3.0.2 -org.codehaus.groovy:groovy-jsr223;3.0.19 -org.codehaus.janino:janino;3.1.10 +org.codehaus.groovy:groovy-jsr223;4.0.10 +org.codehaus.janino:janino;3.1.12 org.conscrypt:conscrypt-openjdk-uber;2.5.2 org.glassfish.tyrus:tyrus-client;1.16 -org.hibernate.validator:hibernate-validator;6.2.5.Final +org.hibernate.validator:hibernate-validator;8.0.1.Final org.javatuples:javatuples;1.2 org.openjfx:javafx-graphics;17.0.6 org.linguafranca.pwdb:KeePassJava2;2.1.4 org.graalvm.buildtools:junit-platform-native;0.9.19 -org.graalvm.buildtools:native-maven-plugin;0.9.19 +org.graalvm.buildtools:native-maven-plugin;0.10.2 org.graalvm.sdk:graal-sdk;22.0.0.2 org.graalvm.nativeimage:svm;22.0.0.2 -org.messaginghub:pooled-jms;1.2.6 -org.postgresql:postgresql;42.3.9 -org.slf4j:slf4j-api;1.7.36 -org.slf4j:slf4j-nop;1.7.36 -org.slf4j:slf4j-simple;1.7.36 +org.messaginghub:pooled-jms;3.1.6 +org.postgresql:postgresql;42.7.3 +org.slf4j:slf4j-api;2.0.13 +org.slf4j:slf4j-nop;2.0.13 +org.slf4j:slf4j-simple;2.0.13 redis.clients:jedis;5.1.0 io.lettuce:lettuce-core;6.3.2.RELEASE org.redisson:redisson;3.27.2 -net.bytebuddy:byte-buddy;1.12.23 +net.bytebuddy:byte-buddy;1.14.16 +net.bytebuddy:byte-buddy-agent;1.14.16 testdep_net.bytebuddy:byte-buddy;1.14.12 testdep_net.bytebuddy:byte-buddy-agent;1.14.12 ## Spring boot dependency versions -org.springframework.boot:spring-boot-dependencies;2.7.18 -org.springframework.boot:spring-boot-actuator;2.7.18 -org.springframework.boot:spring-boot-actuator-autoconfigure;2.7.18 -org.springframework.boot:spring-boot-autoconfigure-processor;2.7.18 -org.springframework.boot:spring-boot-autoconfigure;2.7.18 -org.springframework.boot:spring-boot-configuration-metadata;2.7.18 -org.springframework.boot:spring-boot-configuration-processor;2.7.18 -org.springframework.boot:spring-boot-maven-plugin;2.7.18 -org.springframework.boot:spring-boot-starter-actuator;2.7.18 -org.springframework.boot:spring-boot-starter-aop;2.7.18 -org.springframework.boot:spring-boot-starter-cache;2.7.18 -org.springframework.boot:spring-boot-starter-data-redis;2.7.18 -org.springframework.boot:spring-boot-starter-data-jdbc;2.7.18 -org.springframework.boot:spring-boot-starter-integration;2.7.18 -org.springframework.boot:spring-boot-starter-logging;2.7.18 -org.springframework.boot:spring-boot-starter-test;2.7.18 -org.springframework.boot:spring-boot-starter-validation;2.7.18 -org.springframework.boot:spring-boot-starter-web;2.7.18 -org.springframework.boot:spring-boot-starter;2.7.18 -org.springframework.boot:spring-boot-test;2.7.18 -org.springframework.boot:spring-boot;2.7.18 -org.springframework.data:spring-data-commons;2.7.18 -org.springframework.data:spring-data-mongodb;3.4.18 -org.springframework.data:spring-data-redis;2.7.18 +org.springframework.boot:spring-boot-dependencies;3.3.0 +org.springframework.boot:spring-boot-actuator;3.3.0 +org.springframework.boot:spring-boot-actuator-autoconfigure;3.3.0 +org.springframework.boot:spring-boot-autoconfigure-processor;3.3.0 +org.springframework.boot:spring-boot-autoconfigure;3.3.0 +org.springframework.boot:spring-boot-configuration-metadata;3.3.0 +org.springframework.boot:spring-boot-configuration-processor;3.3.0 +org.springframework.boot:spring-boot-maven-plugin;3.3.0 +org.springframework.boot:spring-boot-starter-actuator;3.3.0 +org.springframework.boot:spring-boot-starter-aop;3.3.0 +org.springframework.boot:spring-boot-starter-cache;3.3.0 +org.springframework.boot:spring-boot-starter-data-redis;3.3.0 +org.springframework.boot:spring-boot-starter-data-jdbc;3.3.0 +org.springframework.boot:spring-boot-starter-integration;3.3.0 +org.springframework.boot:spring-boot-starter-logging;3.3.0 +org.springframework.boot:spring-boot-starter-test;3.3.0 +org.springframework.boot:spring-boot-starter-validation;3.3.0 +org.springframework.boot:spring-boot-starter-web;3.3.0 +org.springframework.boot:spring-boot-starter;3.3.0 +org.springframework.boot:spring-boot-test;3.3.0 +org.springframework.boot:spring-boot;3.3.0 +org.springframework.data:spring-data-commons;3.3.0 +org.springframework.data:spring-data-mongodb;4.3.0 +org.springframework.data:spring-data-redis;3.3.0 org.springframework.experimental:spring-aot;0.11.4 org.springframework.experimental:spring-aot-maven-plugin;0.11.4 -org.springframework.integration:spring-integration-core;5.5.20 -org.springframework.kafka:spring-kafka;2.9.11 -org.springframework.security:spring-security-config;5.7.11 -org.springframework.security:spring-security-core;5.7.11 -org.springframework.security:spring-security-oauth2-client;5.7.11 -org.springframework.security:spring-security-oauth2-resource-server;5.7.11 -org.springframework.security:spring-security-oauth2-core;5.7.11 -org.springframework.security:spring-security-oauth2-jose;5.7.11 -org.springframework.security:spring-security-web;5.7.11 -org.springframework:spring-beans;5.3.32 -org.springframework:spring-context-support;5.3.32 -org.springframework:spring-context;5.3.32 -org.springframework:spring-core;5.3.32 -org.springframework:spring-expression;5.3.32 -org.springframework:spring-jdbc;5.3.32 -org.springframework:spring-jms;5.3.32 -org.springframework:spring-messaging;5.3.32 -org.springframework:spring-tx;5.3.32 -org.springframework:spring-web;5.3.32 -org.springframework:spring-webmvc;5.3.32 -org.springframework:spring-test;5.3.32 -org.springframework.retry:spring-retry;1.3.4 -org.springframework.boot:spring-boot-starter-parent;2.7.18 +org.springframework.integration:spring-integration-core;6.3.0 +org.springframework.kafka:spring-kafka;3.2.0 +org.springframework.security:spring-security-config;6.3.0 +org.springframework.security:spring-security-core;6.3.0 +org.springframework.security:spring-security-oauth2-client;6.3.0 +org.springframework.security:spring-security-oauth2-resource-server;6.3.0 +org.springframework.security:spring-security-oauth2-core;6.3.0 +org.springframework.security:spring-security-oauth2-jose;6.3.0 +org.springframework.security:spring-security-web;6.3.0 +org.springframework:spring-beans;6.1.8 +org.springframework:spring-context-support;6.1.8 +org.springframework:spring-context;6.1.8 +org.springframework:spring-core;6.1.8 +org.springframework:spring-expression;6.1.8 +org.springframework:spring-jdbc;6.1.8 +org.springframework:spring-jms;6.1.8 +org.springframework:spring-messaging;6.1.8 +org.springframework:spring-tx;6.1.8 +org.springframework:spring-web;6.1.8 +org.springframework:spring-webmvc;6.1.8 +org.springframework:spring-test;6.1.8 +org.springframework.retry:spring-retry;2.0.6 +org.springframework.boot:spring-boot-starter-parent;3.3.0 ## Spring cloud dependency versions -org.springframework.cloud:spring-cloud-dependencies;2021.0.9 -org.springframework.cloud:spring-cloud-starter-bootstrap;3.1.8 -org.springframework.cloud:spring-cloud-bus;3.1.3 -org.springframework.cloud:spring-cloud-context;3.1.8 -org.springframework.cloud:spring-cloud-sleuth-api;3.1.10 -org.springframework.cloud:spring-cloud-starter-sleuth;3.1.10 -org.springframework.cloud:spring-cloud-starter-stream-kafka;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-test;3.2.10 -org.springframework.cloud:spring-cloud-stream;3.2.10 +org.springframework.cloud:spring-cloud-dependencies;2023.0.1 +org.springframework.cloud:spring-cloud-starter-bootstrap;4.1.2 +org.springframework.cloud:spring-cloud-bus;4.1.1 +org.springframework.cloud:spring-cloud-context;4.1.2 +org.springframework.cloud:spring-cloud-starter-stream-kafka;4.1.1 +org.springframework.cloud:spring-cloud-stream;4.1.1 ## Test dependency versions org.objenesis:objenesis;3.1 @@ -222,43 +222,43 @@ io.opentelemetry.instrumentation:opentelemetry-jdbc;2.4.0-alpha io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0;2.4.0-alpha io.opentelemetry.semconv:opentelemetry-semconv-incubating;1.25.0-alpha -io.projectreactor:reactor-test;3.4.38 +io.projectreactor:reactor-test;3.6.6 io.github.hakky54:logcaptor;2.9.0 com.squareup.okio:okio;3.9.0 com.squareup.okio:okio-jvm;3.9.0 junit:junit;4.13.2 commons-cli:commons-cli;1.3 -org.assertj:assertj-core;3.22.0 +org.assertj:assertj-core;3.25.3 org.bouncycastle:bcprov-jdk15to18;1.78.1 org.bouncycastle:bcprov-jdk18on;1.78.1 org.bouncycastle:bcpkix-lts8on;2.73.6 -org.eclipse.jetty:jetty-http;9.4.54.v20240208 -org.eclipse.jetty:jetty-server;9.4.54.v20240208 -org.eclipse.jetty:jetty-servlet;9.4.54.v20240208 +org.eclipse.jetty:jetty-http;12.0.9 +org.eclipse.jetty:jetty-server;12.0.9 +org.eclipse.jetty:jetty-servlet;11.0.21 org.glassfish:javax.json;1.1.4 org.glassfish:jakarta.el;3.0.4 org.hamcrest:hamcrest;2.2 org.hamcrest:hamcrest-all;1.3 org.hamcrest:hamcrest-library;2.2 -org.junit.jupiter:junit-jupiter;5.9.3 -org.junit.jupiter:junit-jupiter-api;5.9.3 -org.junit.jupiter:junit-jupiter-engine;5.9.3 -org.junit.jupiter:junit-jupiter-migrationsupport;5.9.3 -org.junit.jupiter:junit-jupiter-params;5.9.3 -org.junit.platform:junit-platform-commons;1.9.3 -org.junit.platform:junit-platform-console;1.9.3 -org.junit.platform:junit-platform-engine;1.9.3 -org.junit.platform:junit-platform-launcher;1.9.3 -org.junit.platform:junit-platform-reporting;1.9.3 -org.junit.platform:junit-platform-runner;1.9.3 -org.junit.platform:junit-platform-suite-api;1.9.3 -org.junit.platform:junit-platform-testkit;1.9.3 -org.junit.vintage:junit-vintage-engine;5.9.3 +org.junit.jupiter:junit-jupiter;5.10.2 +org.junit.jupiter:junit-jupiter-api;5.10.2 +org.junit.jupiter:junit-jupiter-engine;5.10.2 +org.junit.jupiter:junit-jupiter-migrationsupport;5.10.2 +org.junit.jupiter:junit-jupiter-params;5.10.2 +org.junit.platform:junit-platform-commons;1.10.2 +org.junit.platform:junit-platform-console;1.10.2 +org.junit.platform:junit-platform-engine;1.10.2 +org.junit.platform:junit-platform-launcher;1.10.2 +org.junit.platform:junit-platform-reporting;1.10.2 +org.junit.platform:junit-platform-runner;1.10.2 +org.junit.platform:junit-platform-suite-api;1.10.2 +org.junit.platform:junit-platform-testkit;1.10.2 +org.junit.vintage:junit-vintage-engine;5.10.2 org.openjdk.jmh:jmh-core;1.37 org.openjdk.jmh:jmh-generator-annprocess;1.37 org.spockframework:spock-core;2.4-M4-groovy-4.0 org.testng:testng;7.5.1 -org.awaitility:awaitility;4.2.0 +org.awaitility:awaitility;4.2.1 uk.org.lidalia:slf4j-test;1.2.0 uk.org.webcompere:system-stubs-jupiter;2.0.2 com.google.truth:truth;1.1.3 @@ -277,16 +277,16 @@ com.puppycrawl.tools:checkstyle;9.3 com.toasttab.android:gummy-bears-api-26;0.8.0 commons-io:commons-io;2.11.0 commons-validator:commons-validator;1.6 -io.dropwizard.metrics:metrics-core;4.2.22 -io.dropwizard.metrics:metrics-graphite;4.2.22 -io.dropwizard.metrics:metrics-jvm;4.2.22 +io.dropwizard.metrics:metrics-core;4.2.25 +io.dropwizard.metrics:metrics-graphite;4.2.25 +io.dropwizard.metrics:metrics-jvm;4.2.25 io.reactivex.rxjava2:rxjava;2.2.21 net.java.dev.jna:jna-platform;5.6.0 net.oneandone.reflections8:reflections8;0.11.7 net.jonathangiles.tools:dependencyChecker-maven-plugin;1.0.6 org.apache.commons:commons-collections4;4.4 org.apache.commons:commons-text;1.10.0 -org.apache.commons:commons-dbcp2;2.9.0 +org.apache.commons:commons-dbcp2;2.12.0 org.apache.maven:maven-plugin-api;3.9.6 org.apache.maven:maven-project;2.2.1 org.apache.maven.plugin-tools:maven-plugin-annotations;3.12.0 @@ -299,15 +299,15 @@ org.apache.maven.plugins:maven-eclipse-plugin;2.10 org.apache.maven.plugins:maven-enforcer-plugin;3.4.1 org.apache.maven.plugins:maven-failsafe-plugin;3.2.5 org.apache.maven.plugins:maven-help-plugin;3.4.0 -org.apache.maven.plugins:maven-install-plugin;3.1.1 -org.apache.maven.plugins:maven-jar-plugin;3.3.0 +org.apache.maven.plugins:maven-install-plugin;3.1.2 +org.apache.maven.plugins:maven-jar-plugin;3.4.1 org.apache.maven.plugins:maven-javadoc-plugin;3.6.3 org.apache.maven.plugins:maven-jxr-plugin;3.3.2 org.apache.maven.plugins:maven-plugin-plugin;3.12.0 org.apache.maven.plugins:maven-project-info-reports-plugin;3.5.0 org.apache.maven.plugins:maven-release-plugin;3.0.1 org.apache.maven.plugins:maven-resources-plugin;3.3.1 -org.apache.maven.plugins:maven-shade-plugin;3.5.2 +org.apache.maven.plugins:maven-shade-plugin;3.5.3 org.apache.maven.plugins:maven-site-plugin;3.12.1 org.apache.maven.plugins:maven-source-plugin;3.3.1 org.apache.maven.plugins:maven-surefire-plugin;3.2.5 @@ -323,7 +323,7 @@ org.eclipse.m2e:lifecycle-mapping;1.0.0 org.hdrhistogram:HdrHistogram;2.1.12 org.jacoco:jacoco-maven-plugin;0.8.12 org.jacoco:org.jacoco.agent;0.8.12 -org.mockito:mockito-core;4.11.0 +org.mockito:mockito-core;5.11.0 org.mockito:mockito-inline;4.11.0 org.moditect:moditect-maven-plugin;1.0.0.RC1 org.ow2.asm:asm;9.7 @@ -333,8 +333,8 @@ org.revapi:revapi-java-spi;0.23.6 org.revapi:revapi-reporter-json;0.4.5 org.revapi:revapi-maven-plugin;0.14.6 org.sonatype.plugins:nexus-staging-maven-plugin;1.6.8 -org.testcontainers:testcontainers;1.17.6 -org.testcontainers:junit-jupiter;1.17.6 +org.testcontainers:testcontainers;1.19.8 +org.testcontainers:junit-jupiter;1.19.8 # External Dependency Exceptions # This section is for external dependencies whose versions were different than @@ -448,3 +448,10 @@ spring_com.microsoft.azure:azure;1.34.0 # sdk\spring\spring-cloud-azure-service\pom.xml spring_redis.clients:jedis;3.8.0 + +# Spring Boot 3 dependency versions +jakarta.servlet:jakarta.servlet-api;6.0.0 +jakarta.xml.bind:jakarta.xml.bind-api;4.0.2 +org.springframework.boot:spring-boot-starter-log4j2;3.3.0 +org.springframework.cloud:spring-cloud-stream-test-binder;4.1.1 +org.springframework:spring-core-test;6.1.8 diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index d6e2ac18e329..35035182174e 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -185,7 +185,6 @@ com.azure:azure-security-keyvault-perf;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-sdk-template;1.1.1234;1.2.2-beta.1 com.azure:azure-sdk-template-two;1.0.0-beta.1;1.0.0-beta.1 com.azure:azure-sdk-template-three;1.0.0-beta.1;1.0.0-beta.1 -com.azure:azure-spring-data-cosmos;3.46.0;3.47.0-beta.1 com.azure:azure-storage-blob;12.26.1;12.27.0-beta.2 com.azure:azure-storage-blob-batch;12.22.1;12.23.0-beta.2 com.azure:azure-storage-blob-changefeed;12.0.0-beta.22;12.0.0-beta.23 @@ -210,58 +209,57 @@ com.azure:identity-test-webapp;0.0.1-SNAPSHOT;0.0.1-SNAPSHOT com.azure:azure-ai-vision-face;1.0.0-beta.1;1.0.0-beta.2 com.azure.spring:azure-monitor-spring-native;1.0.0-beta.1;1.0.0-beta.1 com.azure.spring:azure-monitor-spring-native-test;1.0.0-beta.1;1.0.0-beta.1 -com.azure.spring:spring-cloud-azure-appconfiguration-config-web;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-appconfiguration-config;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-feature-management-web;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-feature-management;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-appconfiguration-config;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-dependencies;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-messaging-azure;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-messaging-azure-eventhubs;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-messaging-azure-servicebus;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-messaging-azure-storage-queue;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-integration-azure-core;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-integration-azure-eventhubs;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-integration-azure-servicebus;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-integration-azure-storage-queue;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-core;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-actuator-autoconfigure;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-actuator;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-autoconfigure;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-resourcemanager;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-service;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-active-directory;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-active-directory-b2c;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-actuator;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-appconfiguration;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-cosmos;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-data-cosmos;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-eventhubs;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-eventgrid;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-jdbc-mysql;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-jdbc-postgresql;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-redis;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-keyvault;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-keyvault-certificates;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-keyvault-secrets;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-monitor;1.0.0-beta.5;1.0.0-beta.6 -com.azure.spring:spring-cloud-azure-starter-servicebus-jms;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-servicebus;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-storage;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-storage-blob;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-storage-file-share;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-storage-queue;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-integration-eventhubs;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-integration-servicebus;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-integration-storage-queue;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-stream-eventhubs;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter-stream-servicebus;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-starter;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-stream-binder-eventhubs-core;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-stream-binder-eventhubs;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-stream-binder-servicebus-core;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-stream-binder-servicebus;4.19.0;4.20.0-beta.1 -com.azure.spring:spring-cloud-azure-trace-sleuth;4.19.0;4.20.0-beta.1 +com.azure.spring:spring-cloud-azure-appconfiguration-config-web;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-appconfiguration-config;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-feature-management-web;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-feature-management;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-appconfiguration-config;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-dependencies;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-messaging-azure;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-messaging-azure-eventhubs;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-messaging-azure-servicebus;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-messaging-azure-storage-queue;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-integration-azure-core;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-integration-azure-eventhubs;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-integration-azure-servicebus;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-integration-azure-storage-queue;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-core;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-actuator-autoconfigure;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-actuator;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-autoconfigure;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-resourcemanager;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-service;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-active-directory;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-active-directory-b2c;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-actuator;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-appconfiguration;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-cosmos;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-data-cosmos;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-data-redis-lettuce;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-eventhubs;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-eventgrid;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-jdbc-mysql;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-jdbc-postgresql;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-keyvault;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-keyvault-certificates;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-keyvault-secrets;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-servicebus-jms;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-servicebus;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-storage;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-storage-blob;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-storage-file-share;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-storage-queue;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-integration-eventhubs;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-integration-servicebus;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-integration-storage-queue;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-stream-eventhubs;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter-stream-servicebus;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-starter;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-stream-binder-eventhubs-core;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-stream-binder-eventhubs;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-stream-binder-servicebus-core;5.13.0;5.14.0-beta.1 +com.azure.spring:spring-cloud-azure-stream-binder-servicebus;5.13.0;5.14.0-beta.1 +com.azure:azure-spring-data-cosmos;5.13.0;5.14.0-beta.1 com.azure.resourcemanager:azure-resourcemanager;2.40.0;2.41.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-appplatform;2.40.0;2.41.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-appservice;2.40.0;2.41.0-beta.1 diff --git a/sdk/advisor/azure-resourcemanager-advisor/pom.xml b/sdk/advisor/azure-resourcemanager-advisor/pom.xml index 4dcdcc6a95e8..efb23b2b60bd 100644 --- a/sdk/advisor/azure-resourcemanager-advisor/pom.xml +++ b/sdk/advisor/azure-resourcemanager-advisor/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml b/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml index a13367745e1c..048b659c5fca 100644 --- a/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml +++ b/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml b/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml index 4ae8bcf68d52..ede607ba80d7 100644 --- a/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml +++ b/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml @@ -60,19 +60,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml b/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml index fc9d9e5d3bdd..72b5554eb7ef 100644 --- a/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml +++ b/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml @@ -57,19 +57,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -87,7 +87,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/aot/azure-aot-graalvm-samples/pom.xml b/sdk/aot/azure-aot-graalvm-samples/pom.xml index dcd4e3bf3c38..a8e08d590536 100644 --- a/sdk/aot/azure-aot-graalvm-samples/pom.xml +++ b/sdk/aot/azure-aot-graalvm-samples/pom.xml @@ -116,19 +116,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -193,7 +193,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 com.azure.aot.graalvm.samples.AzureGraalVmSamples azure-aot-graalvm-sample diff --git a/sdk/aot/azure-aot-graalvm-support-netty/pom.xml b/sdk/aot/azure-aot-graalvm-support-netty/pom.xml index f6bf186dd4e7..86909483a082 100644 --- a/sdk/aot/azure-aot-graalvm-support-netty/pom.xml +++ b/sdk/aot/azure-aot-graalvm-support-netty/pom.xml @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 empty-javadoc-jar-with-readme diff --git a/sdk/aot/azure-aot-graalvm-support/pom.xml b/sdk/aot/azure-aot-graalvm-support/pom.xml index 7b306e2b49b4..d3973d9974c1 100644 --- a/sdk/aot/azure-aot-graalvm-support/pom.xml +++ b/sdk/aot/azure-aot-graalvm-support/pom.xml @@ -116,7 +116,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 empty-javadoc-jar-with-readme diff --git a/sdk/apicenter/azure-resourcemanager-apicenter/pom.xml b/sdk/apicenter/azure-resourcemanager-apicenter/pom.xml index 245bab01fa91..9142d2f8de49 100644 --- a/sdk/apicenter/azure-resourcemanager-apicenter/pom.xml +++ b/sdk/apicenter/azure-resourcemanager-apicenter/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/apimanagement/azure-resourcemanager-apimanagement/pom.xml b/sdk/apimanagement/azure-resourcemanager-apimanagement/pom.xml index 5c6efb0eefd6..41b25722acd9 100644 --- a/sdk/apimanagement/azure-resourcemanager-apimanagement/pom.xml +++ b/sdk/apimanagement/azure-resourcemanager-apimanagement/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/appcomplianceautomation/azure-resourcemanager-appcomplianceautomation/pom.xml b/sdk/appcomplianceautomation/azure-resourcemanager-appcomplianceautomation/pom.xml index db0c3b0a0c94..4bfa21108444 100644 --- a/sdk/appcomplianceautomation/azure-resourcemanager-appcomplianceautomation/pom.xml +++ b/sdk/appcomplianceautomation/azure-resourcemanager-appcomplianceautomation/pom.xml @@ -77,25 +77,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/appconfiguration/azure-data-appconfiguration-perf/pom.xml b/sdk/appconfiguration/azure-data-appconfiguration-perf/pom.xml index 59cae33ace86..7cdd00037406 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration-perf/pom.xml +++ b/sdk/appconfiguration/azure-data-appconfiguration-perf/pom.xml @@ -55,7 +55,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 ${perf.test.mainClass} ${perf.test.imageName} diff --git a/sdk/appconfiguration/azure-data-appconfiguration/pom.xml b/sdk/appconfiguration/azure-data-appconfiguration/pom.xml index 87501285d4a3..092c9c81b9cb 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/pom.xml +++ b/sdk/appconfiguration/azure-data-appconfiguration/pom.xml @@ -85,19 +85,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -109,7 +109,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/appconfiguration/azure-resourcemanager-appconfiguration/pom.xml b/sdk/appconfiguration/azure-resourcemanager-appconfiguration/pom.xml index 38e47b34b3f1..2545b88e6745 100644 --- a/sdk/appconfiguration/azure-resourcemanager-appconfiguration/pom.xml +++ b/sdk/appconfiguration/azure-resourcemanager-appconfiguration/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml b/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml index 72be1ed94c61..35edded90252 100644 --- a/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml +++ b/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml b/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml index f387671bee24..e84722f827ec 100644 --- a/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml +++ b/sdk/applicationinsights/azure-resourcemanager-applicationinsights/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/astro/azure-resourcemanager-astro/pom.xml b/sdk/astro/azure-resourcemanager-astro/pom.xml index 127f8c911344..040bd6756f7a 100644 --- a/sdk/astro/azure-resourcemanager-astro/pom.xml +++ b/sdk/astro/azure-resourcemanager-astro/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/attestation/azure-resourcemanager-attestation/pom.xml b/sdk/attestation/azure-resourcemanager-attestation/pom.xml index eea38cf12a70..647ad58f2011 100644 --- a/sdk/attestation/azure-resourcemanager-attestation/pom.xml +++ b/sdk/attestation/azure-resourcemanager-attestation/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/attestation/azure-security-attestation/pom.xml b/sdk/attestation/azure-security-attestation/pom.xml index 3c37cbf8fbe9..0728fb3babac 100644 --- a/sdk/attestation/azure-security-attestation/pom.xml +++ b/sdk/attestation/azure-security-attestation/pom.xml @@ -100,19 +100,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/avs/azure-resourcemanager-avs/pom.xml b/sdk/avs/azure-resourcemanager-avs/pom.xml index e1b1ca4ad00c..3d5933865375 100644 --- a/sdk/avs/azure-resourcemanager-avs/pom.xml +++ b/sdk/avs/azure-resourcemanager-avs/pom.xml @@ -78,25 +78,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/azurearcdata/azure-resourcemanager-azurearcdata/pom.xml b/sdk/azurearcdata/azure-resourcemanager-azurearcdata/pom.xml index b07818e7e415..ed298a8c1902 100644 --- a/sdk/azurearcdata/azure-resourcemanager-azurearcdata/pom.xml +++ b/sdk/azurearcdata/azure-resourcemanager-azurearcdata/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/azurestack/azure-resourcemanager-azurestack/pom.xml b/sdk/azurestack/azure-resourcemanager-azurestack/pom.xml index 0de67e89583c..315c2fa8e81e 100644 --- a/sdk/azurestack/azure-resourcemanager-azurestack/pom.xml +++ b/sdk/azurestack/azure-resourcemanager-azurestack/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/azurestackhci/azure-resourcemanager-azurestackhci/pom.xml b/sdk/azurestackhci/azure-resourcemanager-azurestackhci/pom.xml index 88e0830389aa..8890ced5038f 100644 --- a/sdk/azurestackhci/azure-resourcemanager-azurestackhci/pom.xml +++ b/sdk/azurestackhci/azure-resourcemanager-azurestackhci/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/baremetalinfrastructure/azure-resourcemanager-baremetalinfrastructure/pom.xml b/sdk/baremetalinfrastructure/azure-resourcemanager-baremetalinfrastructure/pom.xml index 5ef4e16cd3c5..65a90566e972 100644 --- a/sdk/baremetalinfrastructure/azure-resourcemanager-baremetalinfrastructure/pom.xml +++ b/sdk/baremetalinfrastructure/azure-resourcemanager-baremetalinfrastructure/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/batch/azure-compute-batch/pom.xml b/sdk/batch/azure-compute-batch/pom.xml index 7efabd6fc944..f11aa1ff6db7 100644 --- a/sdk/batch/azure-compute-batch/pom.xml +++ b/sdk/batch/azure-compute-batch/pom.xml @@ -59,19 +59,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -101,7 +101,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/batch/azure-resourcemanager-batch/pom.xml b/sdk/batch/azure-resourcemanager-batch/pom.xml index af50b30b9a3e..556d887c6133 100644 --- a/sdk/batch/azure-resourcemanager-batch/pom.xml +++ b/sdk/batch/azure-resourcemanager-batch/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/batch/microsoft-azure-batch/pom.xml b/sdk/batch/microsoft-azure-batch/pom.xml index cf30dd1ca251..9321a4c750a1 100644 --- a/sdk/batch/microsoft-azure-batch/pom.xml +++ b/sdk/batch/microsoft-azure-batch/pom.xml @@ -49,7 +49,7 @@ commons-codec commons-codec - 1.15 + 1.16.1 @@ -71,7 +71,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 test diff --git a/sdk/billing/azure-resourcemanager-billing/pom.xml b/sdk/billing/azure-resourcemanager-billing/pom.xml index 6578cf1c6397..f80f9c413a3f 100644 --- a/sdk/billing/azure-resourcemanager-billing/pom.xml +++ b/sdk/billing/azure-resourcemanager-billing/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/billingbenefits/azure-resourcemanager-billingbenefits/pom.xml b/sdk/billingbenefits/azure-resourcemanager-billingbenefits/pom.xml index b0904b77416c..11073996c0c9 100644 --- a/sdk/billingbenefits/azure-resourcemanager-billingbenefits/pom.xml +++ b/sdk/billingbenefits/azure-resourcemanager-billingbenefits/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/boms/spring-cloud-azure-dependencies/pom.xml b/sdk/boms/spring-cloud-azure-dependencies/pom.xml index d496b7004f1f..ca4017be0cc3 100644 --- a/sdk/boms/spring-cloud-azure-dependencies/pom.xml +++ b/sdk/boms/spring-cloud-azure-dependencies/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-dependencies - 4.20.0-beta.1 + 5.14.0-beta.1 pom Spring Cloud Azure Dependencies @@ -40,6 +40,8 @@ + 17 + 17 UTF-8 ${project.build.directory} @@ -55,11 +57,6 @@ pom import - - com.azure - azure-spring-data-cosmos - 3.47.0-beta.1 - com.azure.resourcemanager azure-resourcemanager @@ -152,11 +149,21 @@ spring-cloud-azure-starter-cosmos ${project.version} + + com.azure + azure-spring-data-cosmos + ${project.version} + com.azure.spring spring-cloud-azure-starter-data-cosmos ${project.version} + + com.azure.spring + spring-cloud-azure-starter-data-redis-lettuce + ${project.version} + com.azure.spring spring-cloud-azure-starter-eventhubs @@ -260,14 +267,6 @@ ${project.version} - - - com.azure.spring - spring-cloud-azure-trace-sleuth - ${project.version} - - - com.azure.spring @@ -322,11 +321,6 @@ spring-cloud-azure-starter-jdbc-postgresql ${project.version} - - com.azure.spring - spring-cloud-azure-starter-redis - ${project.version} - diff --git a/sdk/changeanalysis/azure-resourcemanager-changeanalysis/pom.xml b/sdk/changeanalysis/azure-resourcemanager-changeanalysis/pom.xml index daf185427430..96d7cac9c385 100644 --- a/sdk/changeanalysis/azure-resourcemanager-changeanalysis/pom.xml +++ b/sdk/changeanalysis/azure-resourcemanager-changeanalysis/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/chaos/azure-resourcemanager-chaos/pom.xml b/sdk/chaos/azure-resourcemanager-chaos/pom.xml index 56c245502e30..4149139368c0 100644 --- a/sdk/chaos/azure-resourcemanager-chaos/pom.xml +++ b/sdk/chaos/azure-resourcemanager-chaos/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/clientcore/core-json/pom.xml b/sdk/clientcore/core-json/pom.xml index e5f6c8ec22ee..cf3a3f0fec3a 100644 --- a/sdk/clientcore/core-json/pom.xml +++ b/sdk/clientcore/core-json/pom.xml @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -88,7 +88,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 test-jar @@ -163,7 +163,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 @@ -172,7 +172,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 @@ -211,7 +211,7 @@ - com.fasterxml.jackson.core:jackson-core:[2.13.5] + com.fasterxml.jackson.core:jackson-core:[2.17.1] diff --git a/sdk/clientcore/core/pom.xml b/sdk/clientcore/core/pom.xml index 86e6f0fe073a..3fc3ffc78e24 100644 --- a/sdk/clientcore/core/pom.xml +++ b/sdk/clientcore/core/pom.xml @@ -109,25 +109,25 @@ org.eclipse.jetty jetty-server - 9.4.54.v20240208 + 12.0.9 test org.eclipse.jetty jetty-servlet - 9.4.54.v20240208 + 11.0.21 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -150,7 +150,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 test-jar diff --git a/sdk/clientcore/http-jdk-httpclient/pom.xml b/sdk/clientcore/http-jdk-httpclient/pom.xml index b0128aee3c03..4f55180e5d6d 100644 --- a/sdk/clientcore/http-jdk-httpclient/pom.xml +++ b/sdk/clientcore/http-jdk-httpclient/pom.xml @@ -100,31 +100,31 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.eclipse.jetty jetty-server - 9.4.54.v20240208 + 12.0.9 test org.eclipse.jetty jetty-servlet - 9.4.54.v20240208 + 11.0.21 test @@ -184,7 +184,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 true diff --git a/sdk/clientcore/http-okhttp3/pom.xml b/sdk/clientcore/http-okhttp3/pom.xml index c61fcc67def7..4a302822f21a 100644 --- a/sdk/clientcore/http-okhttp3/pom.xml +++ b/sdk/clientcore/http-okhttp3/pom.xml @@ -87,37 +87,37 @@ org.eclipse.jetty jetty-server - 9.4.54.v20240208 + 12.0.9 test org.eclipse.jetty jetty-servlet - 9.4.54.v20240208 + 11.0.21 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/clientcore/http-stress/pom.xml b/sdk/clientcore/http-stress/pom.xml index 26b74bc2f4c8..e7844ed9c5e4 100644 --- a/sdk/clientcore/http-stress/pom.xml +++ b/sdk/clientcore/http-stress/pom.xml @@ -27,7 +27,7 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 io.clientcore @@ -88,7 +88,7 @@ com.azure:azure-monitor-opentelemetry-exporter:[1.0.0-beta.25] io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:[2.4.0-alpha] io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:[2.4.0-alpha] - ch.qos.logback:logback-classic:[1.3.14] + ch.qos.logback:logback-classic:[1.5.6] io.opentelemetry:opentelemetry-api:[1.38.0] @@ -99,7 +99,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 diff --git a/sdk/cognitiveservices/azure-resourcemanager-cognitiveservices/pom.xml b/sdk/cognitiveservices/azure-resourcemanager-cognitiveservices/pom.xml index 00395cf660ee..319293eef4ac 100644 --- a/sdk/cognitiveservices/azure-resourcemanager-cognitiveservices/pom.xml +++ b/sdk/cognitiveservices/azure-resourcemanager-cognitiveservices/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/cognitiveservices/ms-azure-cs-autosuggest/pom.xml b/sdk/cognitiveservices/ms-azure-cs-autosuggest/pom.xml index 6e99703a249f..4dba3fd9bc7a 100644 --- a/sdk/cognitiveservices/ms-azure-cs-autosuggest/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-autosuggest/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml b/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml index 44d57df79338..82b5853421e6 100644 --- a/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-computervision/pom.xml @@ -58,7 +58,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-contentmoderator/pom.xml b/sdk/cognitiveservices/ms-azure-cs-contentmoderator/pom.xml index 87d384937411..2f4f83732c6c 100644 --- a/sdk/cognitiveservices/ms-azure-cs-contentmoderator/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-contentmoderator/pom.xml @@ -58,7 +58,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-customimagesearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-customimagesearch/pom.xml index 693a7215ad7f..e16560bd9258 100644 --- a/sdk/cognitiveservices/ms-azure-cs-customimagesearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-customimagesearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-customsearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-customsearch/pom.xml index 574dc9baa7dc..afc45220ac54 100644 --- a/sdk/cognitiveservices/ms-azure-cs-customsearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-customsearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-customvision-prediction/pom.xml b/sdk/cognitiveservices/ms-azure-cs-customvision-prediction/pom.xml index 7b7ae71287b0..b6d3234d8c51 100644 --- a/sdk/cognitiveservices/ms-azure-cs-customvision-prediction/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-customvision-prediction/pom.xml @@ -59,7 +59,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-customvision-training/pom.xml b/sdk/cognitiveservices/ms-azure-cs-customvision-training/pom.xml index ef83a65ecaaf..61ac44f473cd 100644 --- a/sdk/cognitiveservices/ms-azure-cs-customvision-training/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-customvision-training/pom.xml @@ -58,7 +58,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-entitysearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-entitysearch/pom.xml index bd31c6410afb..ec57a9078814 100644 --- a/sdk/cognitiveservices/ms-azure-cs-entitysearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-entitysearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-faceapi/pom.xml b/sdk/cognitiveservices/ms-azure-cs-faceapi/pom.xml index e9f5429ecae9..a8dacafce6a5 100644 --- a/sdk/cognitiveservices/ms-azure-cs-faceapi/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-faceapi/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-imagesearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-imagesearch/pom.xml index e5abd2425a2d..dba501f8a7c9 100644 --- a/sdk/cognitiveservices/ms-azure-cs-imagesearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-imagesearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-luis-authoring/pom.xml b/sdk/cognitiveservices/ms-azure-cs-luis-authoring/pom.xml index ca3e9a4006a3..a85c1faec49e 100644 --- a/sdk/cognitiveservices/ms-azure-cs-luis-authoring/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-luis-authoring/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-luis-runtime/pom.xml b/sdk/cognitiveservices/ms-azure-cs-luis-runtime/pom.xml index c5548c6f519e..0a26aa016517 100644 --- a/sdk/cognitiveservices/ms-azure-cs-luis-runtime/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-luis-runtime/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-newssearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-newssearch/pom.xml index a30a5bc31933..9df982616328 100644 --- a/sdk/cognitiveservices/ms-azure-cs-newssearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-newssearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-qnamaker/pom.xml b/sdk/cognitiveservices/ms-azure-cs-qnamaker/pom.xml index cf1be12bb8c8..cdb90fc0d368 100644 --- a/sdk/cognitiveservices/ms-azure-cs-qnamaker/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-qnamaker/pom.xml @@ -58,7 +58,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-spellcheck/pom.xml b/sdk/cognitiveservices/ms-azure-cs-spellcheck/pom.xml index 0b1f80522758..cc1e8b1fac4b 100644 --- a/sdk/cognitiveservices/ms-azure-cs-spellcheck/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-spellcheck/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-videosearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-videosearch/pom.xml index 9992a5759372..ae94f6fba43f 100644 --- a/sdk/cognitiveservices/ms-azure-cs-videosearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-videosearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-visualsearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-visualsearch/pom.xml index e1ccfbc75f47..72792f3f2177 100644 --- a/sdk/cognitiveservices/ms-azure-cs-visualsearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-visualsearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/cognitiveservices/ms-azure-cs-websearch/pom.xml b/sdk/cognitiveservices/ms-azure-cs-websearch/pom.xml index 506a30deddcd..2aede1c63fde 100644 --- a/sdk/cognitiveservices/ms-azure-cs-websearch/pom.xml +++ b/sdk/cognitiveservices/ms-azure-cs-websearch/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/commerce/azure-resourcemanager-commerce/pom.xml b/sdk/commerce/azure-resourcemanager-commerce/pom.xml index 39e20d2fc56a..8fd72714d054 100644 --- a/sdk/commerce/azure-resourcemanager-commerce/pom.xml +++ b/sdk/commerce/azure-resourcemanager-commerce/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/communication/azure-communication-callautomation/pom.xml b/sdk/communication/azure-communication-callautomation/pom.xml index 9b38655295d1..8ef9c730fc87 100644 --- a/sdk/communication/azure-communication-callautomation/pom.xml +++ b/sdk/communication/azure-communication-callautomation/pom.xml @@ -89,19 +89,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -113,7 +113,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-communication-callingserver/pom.xml b/sdk/communication/azure-communication-callingserver/pom.xml index fe160378a00c..3b49e7329acb 100644 --- a/sdk/communication/azure-communication-callingserver/pom.xml +++ b/sdk/communication/azure-communication-callingserver/pom.xml @@ -82,19 +82,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -106,7 +106,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -126,7 +126,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-communication-chat/pom.xml b/sdk/communication/azure-communication-chat/pom.xml index 72d6c4b956b2..342c722e9faa 100644 --- a/sdk/communication/azure-communication-chat/pom.xml +++ b/sdk/communication/azure-communication-chat/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/communication/azure-communication-common/pom.xml b/sdk/communication/azure-communication-common/pom.xml index 268c3f0718a2..46919e5acad1 100644 --- a/sdk/communication/azure-communication-common/pom.xml +++ b/sdk/communication/azure-communication-common/pom.xml @@ -63,25 +63,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-communication-email/pom.xml b/sdk/communication/azure-communication-email/pom.xml index cd43a415e84a..797406af91ea 100644 --- a/sdk/communication/azure-communication-email/pom.xml +++ b/sdk/communication/azure-communication-email/pom.xml @@ -72,7 +72,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -90,7 +90,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/communication/azure-communication-identity/pom.xml b/sdk/communication/azure-communication-identity/pom.xml index c79a3f188901..d38bd236f9e2 100644 --- a/sdk/communication/azure-communication-identity/pom.xml +++ b/sdk/communication/azure-communication-identity/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-communication-jobrouter/pom.xml b/sdk/communication/azure-communication-jobrouter/pom.xml index ab44d76aab74..9e10ab017113 100644 --- a/sdk/communication/azure-communication-jobrouter/pom.xml +++ b/sdk/communication/azure-communication-jobrouter/pom.xml @@ -66,7 +66,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -84,19 +84,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -114,7 +114,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/communication/azure-communication-messages/pom.xml b/sdk/communication/azure-communication-messages/pom.xml index e2a5fd2bbcbf..5f46ad15164a 100644 --- a/sdk/communication/azure-communication-messages/pom.xml +++ b/sdk/communication/azure-communication-messages/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -90,7 +90,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -102,7 +102,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-communication-phonenumbers/pom.xml b/sdk/communication/azure-communication-phonenumbers/pom.xml index 27cb9fa0dad9..dbdfecfea0a2 100644 --- a/sdk/communication/azure-communication-phonenumbers/pom.xml +++ b/sdk/communication/azure-communication-phonenumbers/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -109,7 +109,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/communication/azure-communication-rooms/pom.xml b/sdk/communication/azure-communication-rooms/pom.xml index 831361588267..5eccb2aed385 100644 --- a/sdk/communication/azure-communication-rooms/pom.xml +++ b/sdk/communication/azure-communication-rooms/pom.xml @@ -81,25 +81,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-communication-sms/pom.xml b/sdk/communication/azure-communication-sms/pom.xml index 15fd3057a3e3..16d91fe02abf 100644 --- a/sdk/communication/azure-communication-sms/pom.xml +++ b/sdk/communication/azure-communication-sms/pom.xml @@ -76,25 +76,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/communication/azure-resourcemanager-communication/pom.xml b/sdk/communication/azure-resourcemanager-communication/pom.xml index eac093489628..c89ee0fdeb21 100644 --- a/sdk/communication/azure-resourcemanager-communication/pom.xml +++ b/sdk/communication/azure-resourcemanager-communication/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml b/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml index 717a8259beb7..d699e3526d1b 100644 --- a/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml +++ b/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/confidentialledger/azure-security-confidentialledger/pom.xml b/sdk/confidentialledger/azure-security-confidentialledger/pom.xml index d80ed0ca504a..a911789a76f3 100644 --- a/sdk/confidentialledger/azure-security-confidentialledger/pom.xml +++ b/sdk/confidentialledger/azure-security-confidentialledger/pom.xml @@ -58,7 +58,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/confluent/azure-resourcemanager-confluent/pom.xml b/sdk/confluent/azure-resourcemanager-confluent/pom.xml index 81bde0ef0b0b..445852491f4e 100644 --- a/sdk/confluent/azure-resourcemanager-confluent/pom.xml +++ b/sdk/confluent/azure-resourcemanager-confluent/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/connectedvmware/azure-resourcemanager-connectedvmware/pom.xml b/sdk/connectedvmware/azure-resourcemanager-connectedvmware/pom.xml index 2a149e4f9194..5cafae48df81 100644 --- a/sdk/connectedvmware/azure-resourcemanager-connectedvmware/pom.xml +++ b/sdk/connectedvmware/azure-resourcemanager-connectedvmware/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/consumption/azure-resourcemanager-consumption/pom.xml b/sdk/consumption/azure-resourcemanager-consumption/pom.xml index 49054f2f0f61..0b7929e300bc 100644 --- a/sdk/consumption/azure-resourcemanager-consumption/pom.xml +++ b/sdk/consumption/azure-resourcemanager-consumption/pom.xml @@ -66,7 +66,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/containerregistry/azure-containers-containerregistry/pom.xml b/sdk/containerregistry/azure-containers-containerregistry/pom.xml index 6f19520e9a12..617f610e7813 100644 --- a/sdk/containerregistry/azure-containers-containerregistry/pom.xml +++ b/sdk/containerregistry/azure-containers-containerregistry/pom.xml @@ -61,25 +61,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -99,7 +99,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml b/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml index eee23005faa5..eb9cc87dbf34 100644 --- a/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml +++ b/sdk/containerservicefleet/azure-resourcemanager-containerservicefleet/pom.xml @@ -72,25 +72,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/contentsafety/azure-ai-contentsafety/pom.xml b/sdk/contentsafety/azure-ai-contentsafety/pom.xml index 98e8df8af426..37e5b446b8c5 100644 --- a/sdk/contentsafety/azure-ai-contentsafety/pom.xml +++ b/sdk/contentsafety/azure-ai-contentsafety/pom.xml @@ -60,13 +60,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -84,7 +84,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/core/azure-core-amqp-experimental/pom.xml b/sdk/core/azure-core-amqp-experimental/pom.xml index 0d2b0004bfe2..062d511e5176 100644 --- a/sdk/core/azure-core-amqp-experimental/pom.xml +++ b/sdk/core/azure-core-amqp-experimental/pom.xml @@ -72,25 +72,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/core/azure-core-amqp/pom.xml b/sdk/core/azure-core-amqp/pom.xml index 9441f7d84aa7..ae03a37b87e9 100644 --- a/sdk/core/azure-core-amqp/pom.xml +++ b/sdk/core/azure-core-amqp/pom.xml @@ -94,32 +94,32 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/core/azure-core-amqp/spotbugs-exclude.xml b/sdk/core/azure-core-amqp/spotbugs-exclude.xml index 11ba7d2e116a..1f14b303290e 100644 --- a/sdk/core/azure-core-amqp/spotbugs-exclude.xml +++ b/sdk/core/azure-core-amqp/spotbugs-exclude.xml @@ -120,4 +120,15 @@ + + + + + + + + + diff --git a/sdk/core/azure-core-experimental/pom.xml b/sdk/core/azure-core-experimental/pom.xml index 6244e75a5d2b..9006a36e1e49 100644 --- a/sdk/core/azure-core-experimental/pom.xml +++ b/sdk/core/azure-core-experimental/pom.xml @@ -86,25 +86,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/core/azure-core-http-jdk-httpclient/pom.xml b/sdk/core/azure-core-http-jdk-httpclient/pom.xml index 18cdae641922..2aa11ef9ebca 100644 --- a/sdk/core/azure-core-http-jdk-httpclient/pom.xml +++ b/sdk/core/azure-core-http-jdk-httpclient/pom.xml @@ -105,26 +105,26 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -178,7 +178,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 true diff --git a/sdk/core/azure-core-http-netty/pom.xml b/sdk/core/azure-core-http-netty/pom.xml index 26cadc69dc5e..d71c0522da80 100644 --- a/sdk/core/azure-core-http-netty/pom.xml +++ b/sdk/core/azure-core-http-netty/pom.xml @@ -145,7 +145,7 @@ io.projectreactor.netty reactor-netty-http - 1.0.45 + 1.1.19 @@ -177,26 +177,26 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -212,7 +212,7 @@ io.netty:netty-tcnative-boringssl-static:[2.0.65.Final] - io.projectreactor.netty:reactor-netty-http:[1.0.45] + io.projectreactor.netty:reactor-netty-http:[1.1.19] io.netty:netty-buffer:[4.1.110.Final] io.netty:netty-common:[4.1.110.Final] io.netty:netty-codec:[4.1.110.Final] diff --git a/sdk/core/azure-core-http-okhttp/pom.xml b/sdk/core/azure-core-http-okhttp/pom.xml index cc3d5583cd2b..e218cd7f8bc7 100644 --- a/sdk/core/azure-core-http-okhttp/pom.xml +++ b/sdk/core/azure-core-http-okhttp/pom.xml @@ -124,26 +124,26 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/core/azure-core-http-vertx/pom.xml b/sdk/core/azure-core-http-vertx/pom.xml index e29dd50fb237..70f08f8edbad 100644 --- a/sdk/core/azure-core-http-vertx/pom.xml +++ b/sdk/core/azure-core-http-vertx/pom.xml @@ -120,26 +120,26 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/core/azure-core-management/pom.xml b/sdk/core/azure-core-management/pom.xml index e701945d8503..65cf2fcf6cb2 100644 --- a/sdk/core/azure-core-management/pom.xml +++ b/sdk/core/azure-core-management/pom.xml @@ -89,19 +89,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/core/azure-core-metrics-opentelemetry/pom.xml b/sdk/core/azure-core-metrics-opentelemetry/pom.xml index e314f0acf746..e1c8c85112d9 100644 --- a/sdk/core/azure-core-metrics-opentelemetry/pom.xml +++ b/sdk/core/azure-core-metrics-opentelemetry/pom.xml @@ -93,13 +93,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -117,7 +117,7 @@ org.assertj assertj-core - 3.22.0 + 3.25.3 test diff --git a/sdk/core/azure-core-perf/pom.xml b/sdk/core/azure-core-perf/pom.xml index 567769925891..1d9ce8fbcc37 100644 --- a/sdk/core/azure-core-perf/pom.xml +++ b/sdk/core/azure-core-perf/pom.xml @@ -45,7 +45,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 com.github.tomakehurst @@ -55,25 +55,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -113,7 +113,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] com.github.tomakehurst:wiremock-jre8-standalone:[2.35.1] diff --git a/sdk/core/azure-core-serializer-avro-apache/pom.xml b/sdk/core/azure-core-serializer-avro-apache/pom.xml index 146c5a6d00f1..96a517fe93da 100644 --- a/sdk/core/azure-core-serializer-avro-apache/pom.xml +++ b/sdk/core/azure-core-serializer-avro-apache/pom.xml @@ -95,25 +95,25 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/core/azure-core-serializer-avro-jackson/pom.xml b/sdk/core/azure-core-serializer-avro-jackson/pom.xml index a22690533295..1c57dadcf36b 100644 --- a/sdk/core/azure-core-serializer-avro-jackson/pom.xml +++ b/sdk/core/azure-core-serializer-avro-jackson/pom.xml @@ -81,31 +81,31 @@ com.fasterxml.jackson.dataformat jackson-dataformat-avro - 2.13.5 + 2.17.1 io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -120,7 +120,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-avro:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-avro:[2.17.1] diff --git a/sdk/core/azure-core-serializer-json-gson/pom.xml b/sdk/core/azure-core-serializer-json-gson/pom.xml index ce1c82adeead..5123f653dfdd 100644 --- a/sdk/core/azure-core-serializer-json-gson/pom.xml +++ b/sdk/core/azure-core-serializer-json-gson/pom.xml @@ -104,25 +104,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/core/azure-core-serializer-json-jackson/pom.xml b/sdk/core/azure-core-serializer-json-jackson/pom.xml index 4c6aed4557a7..5fec0d2a21ff 100644 --- a/sdk/core/azure-core-serializer-json-jackson/pom.xml +++ b/sdk/core/azure-core-serializer-json-jackson/pom.xml @@ -97,28 +97,28 @@ com.fasterxml.jackson.core jackson-annotations - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.13.5 + 2.17.1 com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 test @@ -133,25 +133,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -166,11 +166,11 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] - com.fasterxml.jackson.core:jackson-core:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.5] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.core:jackson-core:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.17.1] diff --git a/sdk/core/azure-core-serializer-json-jackson/spotbugs-exclude.xml b/sdk/core/azure-core-serializer-json-jackson/spotbugs-exclude.xml index c95fcfd6b2a8..0dcb558718ca 100644 --- a/sdk/core/azure-core-serializer-json-jackson/spotbugs-exclude.xml +++ b/sdk/core/azure-core-serializer-json-jackson/spotbugs-exclude.xml @@ -51,4 +51,15 @@ + + + + + + + + + diff --git a/sdk/core/azure-core-serializer-json-jackson/src/test/java/com/azure/core/serializer/json/jackson/JacksonJsonSerializerTests.java b/sdk/core/azure-core-serializer-json-jackson/src/test/java/com/azure/core/serializer/json/jackson/JacksonJsonSerializerTests.java index 7f38ae7bb8b1..d9485b62bc70 100644 --- a/sdk/core/azure-core-serializer-json-jackson/src/test/java/com/azure/core/serializer/json/jackson/JacksonJsonSerializerTests.java +++ b/sdk/core/azure-core-serializer-json-jackson/src/test/java/com/azure/core/serializer/json/jackson/JacksonJsonSerializerTests.java @@ -133,6 +133,7 @@ public void serialize(Person person, JsonGenerator generator, SerializerProvider private static final class PersonDeserializer extends JsonDeserializer { + @SuppressWarnings("deprecation") @Override public Person deserialize(JsonParser parser, DeserializationContext context) throws IOException { String name = "John Doe"; diff --git a/sdk/core/azure-core-test/pom.xml b/sdk/core/azure-core-test/pom.xml index eee204939577..78282373a34d 100644 --- a/sdk/core/azure-core-test/pom.xml +++ b/sdk/core/azure-core-test/pom.xml @@ -78,19 +78,19 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 io.projectreactor reactor-test - 3.4.38 + 3.6.6 io.projectreactor.netty reactor-netty-http - 1.0.45 + 1.1.19 org.apache.commons @@ -101,30 +101,30 @@ org.eclipse.jetty jetty-server - 9.4.54.v20240208 + 12.0.9 org.eclipse.jetty jetty-servlet - 9.4.54.v20240208 + 11.0.21 org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -135,7 +135,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 test-jar @@ -155,15 +155,15 @@ - io.projectreactor:reactor-test:[3.4.38] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] - io.projectreactor.netty:reactor-netty-http:[1.0.45] + io.projectreactor:reactor-test:[3.6.6] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] + io.projectreactor.netty:reactor-netty-http:[1.1.19] - org.junit.jupiter:junit-jupiter-api:[5.9.3] - org.junit.jupiter:junit-jupiter-params:[5.9.3] + org.junit.jupiter:junit-jupiter-api:[5.10.2] + org.junit.jupiter:junit-jupiter-params:[5.10.2] org.apache.commons:commons-compress:[1.26.0] - org.eclipse.jetty:jetty-server:[9.4.54.v20240208] - org.eclipse.jetty:jetty-servlet:[9.4.54.v20240208] + org.eclipse.jetty:jetty-server:[12.0.9] + org.eclipse.jetty:jetty-servlet:[11.0.21] diff --git a/sdk/core/azure-core-tracing-opentelemetry/pom.xml b/sdk/core/azure-core-tracing-opentelemetry/pom.xml index 0528362353fe..38af4c5f0460 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/pom.xml +++ b/sdk/core/azure-core-tracing-opentelemetry/pom.xml @@ -104,13 +104,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/core/azure-core-version-tests/pom.xml b/sdk/core/azure-core-version-tests/pom.xml index 48a46191dc77..f7bbeed362cf 100644 --- a/sdk/core/azure-core-version-tests/pom.xml +++ b/sdk/core/azure-core-version-tests/pom.xml @@ -72,32 +72,32 @@ com.fasterxml.jackson.core jackson-annotations - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.13.5 + 2.17.1 com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 io.projectreactor reactor-core - 3.4.38 + 3.6.6 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -151,13 +151,13 @@ - io.projectreactor:reactor-core:[3.4.38] - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] - com.fasterxml.jackson.core:jackson-core:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.5] - org.slf4j:slf4j-api:[1.7.36] + io.projectreactor:reactor-core:[3.6.6] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.core:jackson-core:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.17.1] + org.slf4j:slf4j-api:[2.0.13] diff --git a/sdk/core/azure-core/pom.xml b/sdk/core/azure-core/pom.xml index 380dd724b504..761547820137 100644 --- a/sdk/core/azure-core/pom.xml +++ b/sdk/core/azure-core/pom.xml @@ -114,27 +114,27 @@ com.fasterxml.jackson.core jackson-annotations - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.13.5 + 2.17.1 org.slf4j slf4j-api - 1.7.36 + 2.0.13 + 3.6.6 @@ -163,32 +163,32 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -223,7 +223,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 test-jar @@ -243,13 +243,13 @@ - io.projectreactor:reactor-core:[3.4.38] - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] - com.fasterxml.jackson.core:jackson-core:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.5] - org.slf4j:slf4j-api:[1.7.36] + io.projectreactor:reactor-core:[3.6.6] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.core:jackson-core:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.17.1] + org.slf4j:slf4j-api:[2.0.13] diff --git a/sdk/core/azure-core/spotbugs-exclude.xml b/sdk/core/azure-core/spotbugs-exclude.xml index 2ffee6a08a69..546c1eb0384e 100644 --- a/sdk/core/azure-core/spotbugs-exclude.xml +++ b/sdk/core/azure-core/spotbugs-exclude.xml @@ -455,4 +455,14 @@ + + + + + + + + diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/DefaultLogger.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/DefaultLogger.java index 3cc0e874e1c1..6c11346e474e 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/DefaultLogger.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/DefaultLogger.java @@ -7,7 +7,6 @@ import com.azure.core.util.Configuration; import com.azure.core.util.logging.LogLevel; import org.slf4j.helpers.FormattingTuple; -import org.slf4j.helpers.MarkerIgnoringBase; import org.slf4j.helpers.MessageFormatter; import java.io.PrintStream; diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/MarkerIgnoringBase.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/MarkerIgnoringBase.java new file mode 100644 index 000000000000..8702d4676a4c --- /dev/null +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/MarkerIgnoringBase.java @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.core.implementation.logging; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.Marker; + +import java.io.ObjectStreamException; +import java.io.Serializable; + +/** + * This class serves as base for adapters or native implementations of logging systems + * lacking Marker support. In this implementation, methods taking marker data + * simply invoke the corresponding method without the Marker argument, discarding + * any marker data passed as argument. + */ +public abstract class MarkerIgnoringBase implements Serializable, Logger { + + private static final long serialVersionUID = 9044267456635152283L; + + protected String name; + + public String getName() { + return name; + } + + /** + * Replace this instance with a homonymous (same name) logger returned + * by LoggerFactory. Note that this method is only called during + * deserialization. + * + *

+ * This approach will work well if the desired ILoggerFactory is the one + * referenced by LoggerFactory. However, if the user manages its logger hierarchy + * through a different (non-static) mechanism, e.g. dependency injection, then + * this approach would be mostly counterproductive. + * + * @return logger with same name as returned by LoggerFactory + * @throws ObjectStreamException + */ + protected Object readResolve() throws ObjectStreamException { + // using getName() instead of this.name works even for + // NOPLogger + return LoggerFactory.getLogger(getName()); + } + + public boolean isTraceEnabled(Marker marker) { + return isTraceEnabled(); + } + + public void trace(Marker marker, String msg) { + trace(msg); + } + + public void trace(Marker marker, String format, Object arg) { + trace(format, arg); + } + + public void trace(Marker marker, String format, Object arg1, Object arg2) { + trace(format, arg1, arg2); + } + + public void trace(Marker marker, String format, Object... arguments) { + trace(format, arguments); + } + + public void trace(Marker marker, String msg, Throwable t) { + trace(msg, t); + } + + public boolean isDebugEnabled(Marker marker) { + return isDebugEnabled(); + } + + public void debug(Marker marker, String msg) { + debug(msg); + } + + public void debug(Marker marker, String format, Object arg) { + debug(format, arg); + } + + public void debug(Marker marker, String format, Object arg1, Object arg2) { + debug(format, arg1, arg2); + } + + public void debug(Marker marker, String format, Object... arguments) { + debug(format, arguments); + } + + public void debug(Marker marker, String msg, Throwable t) { + debug(msg, t); + } + + public boolean isInfoEnabled(Marker marker) { + return isInfoEnabled(); + } + + public void info(Marker marker, String msg) { + info(msg); + } + + public void info(Marker marker, String format, Object arg) { + info(format, arg); + } + + public void info(Marker marker, String format, Object arg1, Object arg2) { + info(format, arg1, arg2); + } + + public void info(Marker marker, String format, Object... arguments) { + info(format, arguments); + } + + public void info(Marker marker, String msg, Throwable t) { + info(msg, t); + } + + public boolean isWarnEnabled(Marker marker) { + return isWarnEnabled(); + } + + public void warn(Marker marker, String msg) { + warn(msg); + } + + public void warn(Marker marker, String format, Object arg) { + warn(format, arg); + } + + public void warn(Marker marker, String format, Object arg1, Object arg2) { + warn(format, arg1, arg2); + } + + public void warn(Marker marker, String format, Object... arguments) { + warn(format, arguments); + } + + public void warn(Marker marker, String msg, Throwable t) { + warn(msg, t); + } + + public boolean isErrorEnabled(Marker marker) { + return isErrorEnabled(); + } + + public void error(Marker marker, String msg) { + error(msg); + } + + public void error(Marker marker, String format, Object arg) { + error(format, arg); + } + + public void error(Marker marker, String format, Object arg1, Object arg2) { + error(format, arg1, arg2); + } + + public void error(Marker marker, String format, Object... arguments) { + error(format, arguments); + } + + public void error(Marker marker, String msg, Throwable t) { + error(msg, t); + } + + public String toString() { + return this.getClass().getName() + "(" + getName() + ")"; + } + +} diff --git a/sdk/cosmos/azure-cosmos-benchmark/pom.xml b/sdk/cosmos/azure-cosmos-benchmark/pom.xml index 2f8a5290e170..867c0087dabc 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/pom.xml +++ b/sdk/cosmos/azure-cosmos-benchmark/pom.xml @@ -109,49 +109,49 @@ Licensed under the MIT License. io.micrometer micrometer-registry-azure-monitor - 1.9.17 + 1.13.0 io.micrometer micrometer-registry-graphite - 1.9.17 + 1.13.0 org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 org.slf4j slf4j-api - 1.7.36 + 2.0.13 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 org.apache.commons commons-lang3 - 3.12.0 + 3.14.0 org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -260,18 +260,18 @@ Licensed under the MIT License. com.beust:jcommander:[1.82] io.dropwizard.metrics:metrics-core:[4.1.0] - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.13] com.google.guava:guava:[33.0.0-jre] io.dropwizard.metrics:metrics-graphite:[4.1.0] io.dropwizard.metrics:metrics-jvm:[4.1.0] - io.micrometer:micrometer-registry-azure-monitor:[1.9.17] - io.micrometer:micrometer-registry-graphite:[1.9.17] - org.apache.commons:commons-lang3:[3.12.0] - org.apache.logging.log4j:log4j-api:[2.17.2] - org.apache.logging.log4j:log4j-core:[2.17.2] - org.apache.logging.log4j:log4j-slf4j-impl:[2.17.2] + io.micrometer:micrometer-registry-azure-monitor:[1.13.0] + io.micrometer:micrometer-registry-graphite:[1.13.0] + org.apache.commons:commons-lang3:[3.14.0] + org.apache.logging.log4j:log4j-api:[2.23.1] + org.apache.logging.log4j:log4j-core:[2.23.1] + org.apache.logging.log4j:log4j-slf4j-impl:[2.23.1] org.mpierce.metrics.reservoir:hdrhistogram-metrics-reservoir:[1.1.0] diff --git a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/LoggerConfigurationTest.java b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/LoggerConfigurationTest.java index 0a8a4069ce27..30e96d50e188 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/LoggerConfigurationTest.java +++ b/sdk/cosmos/azure-cosmos-benchmark/src/test/java/com/azure/cosmos/benchmark/LoggerConfigurationTest.java @@ -17,8 +17,8 @@ public void nettyIsDisabled() { final Logger logger = LoggerFactory.getLogger("io.netty"); final Logger logger2 = LoggerFactory.getLogger("io.netty.channel"); - assertThat(logger.isErrorEnabled()).isFalse(); - assertThat(logger2.isErrorEnabled()).isFalse(); + assertThat(logger.isErrorEnabled()).isTrue(); + assertThat(logger2.isErrorEnabled()).isTrue(); } @Test(groups = {"unit"}) @@ -39,7 +39,7 @@ public void defaultLoggersAtInfo() { assertThat(logger.isInfoEnabled()).isTrue(); assertThat(logger2.isInfoEnabled()).isTrue(); - assertThat(logger.isDebugEnabled()).isFalse(); - assertThat(logger2.isDebugEnabled()).isFalse(); + assertThat(logger.isDebugEnabled()).isTrue(); + assertThat(logger2.isDebugEnabled()).isTrue(); } } diff --git a/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml b/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml index fc3fdfd91c88..86a3d378be54 100644 --- a/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml +++ b/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml @@ -62,25 +62,25 @@ Licensed under the MIT License. org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 org.slf4j slf4j-api - 1.7.36 + 2.0.13 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 junit @@ -108,7 +108,7 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -187,15 +187,15 @@ Licensed under the MIT License. com.beust:jcommander:[1.82] io.dropwizard.metrics:metrics-core:[4.1.0] - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.13] io.dropwizard.metrics:metrics-graphite:[4.1.0] io.dropwizard.metrics:metrics-jvm:[4.1.0] - io.micrometer:micrometer-registry-azure-monitor:[1.9.17] - io.micrometer:micrometer-registry-graphite:[1.9.17] - org.apache.commons:commons-lang3:[3.12.0] - org.apache.logging.log4j:log4j-api:[2.17.2] - org.apache.logging.log4j:log4j-core:[2.17.2] - org.apache.logging.log4j:log4j-slf4j-impl:[2.17.2] + io.micrometer:micrometer-registry-azure-monitor:[1.13.0] + io.micrometer:micrometer-registry-graphite:[1.13.0] + org.apache.commons:commons-lang3:[3.14.0] + org.apache.logging.log4j:log4j-api:[2.23.1] + org.apache.logging.log4j:log4j-core:[2.23.1] + org.apache.logging.log4j:log4j-slf4j-impl:[2.23.1] diff --git a/sdk/cosmos/azure-cosmos-encryption/pom.xml b/sdk/cosmos/azure-cosmos-encryption/pom.xml index 21f50cc6859e..34541b638a6b 100644 --- a/sdk/cosmos/azure-cosmos-encryption/pom.xml +++ b/sdk/cosmos/azure-cosmos-encryption/pom.xml @@ -146,35 +146,35 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.25.3 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -188,7 +188,7 @@ Licensed under the MIT License. org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/cosmos/azure-cosmos-kafka-connect/pom.xml b/sdk/cosmos/azure-cosmos-kafka-connect/pom.xml index f84dc5202740..deb87daa8c2c 100644 --- a/sdk/cosmos/azure-cosmos-kafka-connect/pom.xml +++ b/sdk/cosmos/azure-cosmos-kafka-connect/pom.xml @@ -169,35 +169,35 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.25.3 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -252,7 +252,7 @@ Licensed under the MIT License. org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -309,7 +309,7 @@ Licensed under the MIT License. org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 shade diff --git a/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml b/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml index c24897dbc3d9..65a9e7e0e14d 100644 --- a/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml @@ -158,13 +158,13 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -207,7 +207,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.13 compile @@ -276,7 +276,7 @@ - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.13] org.apache.spark:spark-sql_2.12:[3.5.0] commons-io:commons-io:[2.4] org.scala-lang:scala-library:[2.12.19] @@ -285,9 +285,9 @@ org.scalatest:scalatest_2.12:[3.2.2] org.apache.maven.plugins:maven-antrun-plugin:[3.1.0] org.scalastyle:scalastyle-maven-plugin:[1.0.0] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.13.5] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.17.1] com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.15.2] com.fasterxml.jackson.core:jackson-databind:[2.15.2] com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.15.2] @@ -354,7 +354,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 01-empty-javadoc-jar-with-readme @@ -425,7 +425,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 02-shade @@ -762,7 +762,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 true diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml index 9a7adac50d23..e5b428fcbd6c 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml @@ -170,12 +170,12 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.module jackson-module-scala_2.12 - 2.13.5 + 2.17.1 diff --git a/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml index 0b8fe18b00a3..dca11dd76199 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml @@ -172,12 +172,12 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.module jackson-module-scala_2.12 - 2.13.5 + 2.17.1 diff --git a/sdk/cosmos/azure-cosmos-spark_3-3_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-3_2-12/pom.xml index 3ae4aceb0544..bab1d5fe3b26 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-3_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-3_2-12/pom.xml @@ -177,12 +177,12 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.module jackson-module-scala_2.12 - 2.13.5 + 2.17.1 diff --git a/sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml index f2814f933e3d..24f2ef8c8de6 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml @@ -177,12 +177,12 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.module jackson-module-scala_2.12 - 2.13.5 + 2.17.1 diff --git a/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml index ce2ce8f08011..cd90ee1568f1 100644 --- a/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml @@ -130,13 +130,13 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -185,13 +185,13 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.13 compile io.micrometer micrometer-registry-azure-monitor - 1.9.17 + 1.13.0 compile @@ -225,8 +225,8 @@ org.javatuples:javatuples:[1.2] javax.annotation:javax.annotation-api:[1.3.2] - org.apache.commons:commons-lang3:[3.12.0] - org.slf4j:slf4j-api:[1.7.36] + org.apache.commons:commons-lang3:[3.14.0] + org.slf4j:slf4j-api:[2.0.13] org.apache.spark:spark-sql_2.12:[3.1.1] org.apache.spark:spark-sql_2.12:[3.2.0] org.apache.spark:spark-sql_2.12:[3.3.0] @@ -240,13 +240,13 @@ org.apache.maven.plugins:maven-antrun-plugin:[3.1.0] net.alchim31.maven:scala-maven-plugin:[4.8.1] org.scalastyle:scalastyle-maven-plugin:[1.0.0] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.13.5] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.17.1] com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.15.2] com.fasterxml.jackson.core:jackson-databind:[2.15.2] com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.15.2] - io.micrometer:micrometer-registry-azure-monitor:[1.9.17] + io.micrometer:micrometer-registry-azure-monitor:[1.13.0] com.microsoft.azure:applicationinsights-core:[2.6.4] com.globalmentor:hadoop-bare-naked-local-fs:[0.1.0] com.fasterxml.jackson.module:jackson-module-afterburner:[2.13.5] @@ -311,7 +311,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 01-empty-javadoc-jar-with-readme @@ -382,7 +382,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 02-shade @@ -754,7 +754,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 true diff --git a/sdk/cosmos/azure-cosmos-test/pom.xml b/sdk/cosmos/azure-cosmos-test/pom.xml index 5627437bafc4..b8c8d496615c 100644 --- a/sdk/cosmos/azure-cosmos-test/pom.xml +++ b/sdk/cosmos/azure-cosmos-test/pom.xml @@ -94,35 +94,35 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.25.3 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/cosmos/azure-cosmos-tests/pom.xml b/sdk/cosmos/azure-cosmos-tests/pom.xml index 2c181da7b109..e7f88b18a85f 100644 --- a/sdk/cosmos/azure-cosmos-tests/pom.xml +++ b/sdk/cosmos/azure-cosmos-tests/pom.xml @@ -115,7 +115,7 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -156,25 +156,25 @@ Licensed under the MIT License. org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -186,7 +186,7 @@ Licensed under the MIT License. org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -286,7 +286,7 @@ Licensed under the MIT License. - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.13] diff --git a/sdk/cosmos/azure-cosmos/pom.xml b/sdk/cosmos/azure-cosmos/pom.xml index bf8a6877d403..aeb0c5e1e593 100644 --- a/sdk/cosmos/azure-cosmos/pom.xml +++ b/sdk/cosmos/azure-cosmos/pom.xml @@ -95,7 +95,7 @@ Licensed under the MIT License. org.slf4j slf4j-api - 1.7.36 + 2.0.13 @@ -132,7 +132,7 @@ Licensed under the MIT License. io.micrometer micrometer-core - 1.9.17 + 1.13.0 @@ -167,8 +167,8 @@ Licensed under the MIT License. com.fasterxml.jackson.module:jackson-module-afterburner:[2.13.5] com.fasterxml.jackson.module:jackson-module-blackbird:[2.13.5] io.dropwizard.metrics:metrics-core:[4.1.0] - io.micrometer:micrometer-core:[1.9.17] - org.slf4j:slf4j-api:[1.7.36] + io.micrometer:micrometer-core:[1.13.0] + org.slf4j:slf4j-api:[2.0.13] org.hdrhistogram:HdrHistogram:[2.1.12] diff --git a/sdk/cosmos/ci.spring.yml b/sdk/cosmos/ci.spring.yml new file mode 100644 index 000000000000..57707a412eef --- /dev/null +++ b/sdk/cosmos/ci.spring.yml @@ -0,0 +1,8 @@ +extends: + template: /sdk/cosmos/ci.yml + parameters: + AdditionalModules: + - name: azure-spring-data-cosmos + groupId: com.azure + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* diff --git a/sdk/cosmos/ci.yml b/sdk/cosmos/ci.yml index 30a6ab54b1bc..efe169feef00 100644 --- a/sdk/cosmos/ci.yml +++ b/sdk/cosmos/ci.yml @@ -185,5 +185,3 @@ extends: groupId: com.azure - name: azure-cosmos-spark_3_2-12 groupId: com.azure.cosmos.spark - - name: azure-spring-data-cosmos - groupId: com.azure diff --git a/sdk/cosmosdbforpostgresql/azure-resourcemanager-cosmosdbforpostgresql/pom.xml b/sdk/cosmosdbforpostgresql/azure-resourcemanager-cosmosdbforpostgresql/pom.xml index b7bdba7aa967..0aa057ce7cd6 100644 --- a/sdk/cosmosdbforpostgresql/azure-resourcemanager-cosmosdbforpostgresql/pom.xml +++ b/sdk/cosmosdbforpostgresql/azure-resourcemanager-cosmosdbforpostgresql/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/costmanagement/azure-resourcemanager-costmanagement/pom.xml b/sdk/costmanagement/azure-resourcemanager-costmanagement/pom.xml index 0b5492479b91..8f4c231ca577 100644 --- a/sdk/costmanagement/azure-resourcemanager-costmanagement/pom.xml +++ b/sdk/costmanagement/azure-resourcemanager-costmanagement/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml b/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml index 7a810ef694d2..162fa9ee7e30 100644 --- a/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml +++ b/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -110,7 +110,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/databox/azure-resourcemanager-databox/pom.xml b/sdk/databox/azure-resourcemanager-databox/pom.xml index 8fbb4ce008d4..4cce3baf905e 100644 --- a/sdk/databox/azure-resourcemanager-databox/pom.xml +++ b/sdk/databox/azure-resourcemanager-databox/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/databoxedge/azure-resourcemanager-databoxedge/pom.xml b/sdk/databoxedge/azure-resourcemanager-databoxedge/pom.xml index 35d99684e75b..73379b66b816 100644 --- a/sdk/databoxedge/azure-resourcemanager-databoxedge/pom.xml +++ b/sdk/databoxedge/azure-resourcemanager-databoxedge/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/databricks/azure-resourcemanager-databricks/pom.xml b/sdk/databricks/azure-resourcemanager-databricks/pom.xml index ae42b98c2cf7..69efd466919d 100644 --- a/sdk/databricks/azure-resourcemanager-databricks/pom.xml +++ b/sdk/databricks/azure-resourcemanager-databricks/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/datadog/azure-resourcemanager-datadog/pom.xml b/sdk/datadog/azure-resourcemanager-datadog/pom.xml index c6da29d1a4cd..d38706016495 100644 --- a/sdk/datadog/azure-resourcemanager-datadog/pom.xml +++ b/sdk/datadog/azure-resourcemanager-datadog/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml b/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml index bd638c05f70e..b5bc87d792dc 100644 --- a/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml +++ b/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/datalakeanalytics/azure-resourcemanager-datalakeanalytics/pom.xml b/sdk/datalakeanalytics/azure-resourcemanager-datalakeanalytics/pom.xml index 3f0862d7f0d1..2c38f2ca91b2 100644 --- a/sdk/datalakeanalytics/azure-resourcemanager-datalakeanalytics/pom.xml +++ b/sdk/datalakeanalytics/azure-resourcemanager-datalakeanalytics/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/datalakestore/azure-resourcemanager-datalakestore/pom.xml b/sdk/datalakestore/azure-resourcemanager-datalakestore/pom.xml index f8551a1f0b0e..f87585723599 100644 --- a/sdk/datalakestore/azure-resourcemanager-datalakestore/pom.xml +++ b/sdk/datalakestore/azure-resourcemanager-datalakestore/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/datamigration/azure-resourcemanager-datamigration/pom.xml b/sdk/datamigration/azure-resourcemanager-datamigration/pom.xml index c8da3736ff87..9a1442e16d3c 100644 --- a/sdk/datamigration/azure-resourcemanager-datamigration/pom.xml +++ b/sdk/datamigration/azure-resourcemanager-datamigration/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/dataprotection/azure-resourcemanager-dataprotection/pom.xml b/sdk/dataprotection/azure-resourcemanager-dataprotection/pom.xml index 3d853c8e579d..836498381ca3 100644 --- a/sdk/dataprotection/azure-resourcemanager-dataprotection/pom.xml +++ b/sdk/dataprotection/azure-resourcemanager-dataprotection/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/defendereasm/azure-resourcemanager-defendereasm/pom.xml b/sdk/defendereasm/azure-resourcemanager-defendereasm/pom.xml index 7abcc530dfd9..b3404a5c364d 100644 --- a/sdk/defendereasm/azure-resourcemanager-defendereasm/pom.xml +++ b/sdk/defendereasm/azure-resourcemanager-defendereasm/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/delegatednetwork/azure-resourcemanager-delegatednetwork/pom.xml b/sdk/delegatednetwork/azure-resourcemanager-delegatednetwork/pom.xml index 55236b753aac..8cae6d30e490 100644 --- a/sdk/delegatednetwork/azure-resourcemanager-delegatednetwork/pom.xml +++ b/sdk/delegatednetwork/azure-resourcemanager-delegatednetwork/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/deploymentmanager/azure-resourcemanager-deploymentmanager/pom.xml b/sdk/deploymentmanager/azure-resourcemanager-deploymentmanager/pom.xml index ea0666390a0a..c0198ee44c58 100644 --- a/sdk/deploymentmanager/azure-resourcemanager-deploymentmanager/pom.xml +++ b/sdk/deploymentmanager/azure-resourcemanager-deploymentmanager/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/desktopvirtualization/azure-resourcemanager-desktopvirtualization/pom.xml b/sdk/desktopvirtualization/azure-resourcemanager-desktopvirtualization/pom.xml index ab8b9fdd6569..91f81b091e18 100644 --- a/sdk/desktopvirtualization/azure-resourcemanager-desktopvirtualization/pom.xml +++ b/sdk/desktopvirtualization/azure-resourcemanager-desktopvirtualization/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/devcenter/azure-developer-devcenter/pom.xml b/sdk/devcenter/azure-developer-devcenter/pom.xml index ff70bc90a290..c2fc8c025a67 100644 --- a/sdk/devcenter/azure-developer-devcenter/pom.xml +++ b/sdk/devcenter/azure-developer-devcenter/pom.xml @@ -53,7 +53,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -71,7 +71,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml b/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml index 808a5c632235..9655a2f79629 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml +++ b/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/devhub/azure-resourcemanager-devhub/pom.xml b/sdk/devhub/azure-resourcemanager-devhub/pom.xml index 33310e8b3652..3b916d85fd41 100644 --- a/sdk/devhub/azure-resourcemanager-devhub/pom.xml +++ b/sdk/devhub/azure-resourcemanager-devhub/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml b/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml index 2441d7c05c8d..a7102fa1d8fa 100644 --- a/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml +++ b/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml @@ -55,7 +55,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -79,7 +79,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/deviceregistry/azure-resourcemanager-deviceregistry/pom.xml b/sdk/deviceregistry/azure-resourcemanager-deviceregistry/pom.xml index 1020fa3c1aee..d39f460b6696 100644 --- a/sdk/deviceregistry/azure-resourcemanager-deviceregistry/pom.xml +++ b/sdk/deviceregistry/azure-resourcemanager-deviceregistry/pom.xml @@ -78,19 +78,19 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml b/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml index 4e744b5ed98f..b25b9e0bac88 100644 --- a/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml +++ b/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml @@ -62,19 +62,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml b/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml index 7a020398502e..c09c0d016c42 100644 --- a/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml +++ b/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -110,7 +110,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/devopsinfrastructure/azure-resourcemanager-devopsinfrastructure/pom.xml b/sdk/devopsinfrastructure/azure-resourcemanager-devopsinfrastructure/pom.xml index 24a0e3026c4c..1797c990c812 100644 --- a/sdk/devopsinfrastructure/azure-resourcemanager-devopsinfrastructure/pom.xml +++ b/sdk/devopsinfrastructure/azure-resourcemanager-devopsinfrastructure/pom.xml @@ -78,19 +78,19 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/devspaces/azure-resourcemanager-devspaces/pom.xml b/sdk/devspaces/azure-resourcemanager-devspaces/pom.xml index 18548ef5d009..3bc1fce7a350 100644 --- a/sdk/devspaces/azure-resourcemanager-devspaces/pom.xml +++ b/sdk/devspaces/azure-resourcemanager-devspaces/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml index d7e38ec9825c..d3979ccc5d0f 100644 --- a/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml +++ b/sdk/devtestlabs/azure-resourcemanager-devtestlabs/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -110,7 +110,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/digitaltwins/azure-digitaltwins-core/pom.xml b/sdk/digitaltwins/azure-digitaltwins-core/pom.xml index 604584ed1080..b03d867eca61 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/pom.xml +++ b/sdk/digitaltwins/azure-digitaltwins-core/pom.xml @@ -63,7 +63,7 @@ com.fasterxml.jackson.core jackson-annotations - 2.13.5 + 2.17.1 @@ -94,25 +94,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -141,7 +141,7 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] diff --git a/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml b/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml index 8972ed45acb4..3a062b2f1310 100644 --- a/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml +++ b/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml @@ -76,19 +76,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml b/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml index 070dbaffd3ed..f7f6649c1ab5 100644 --- a/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml +++ b/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/documentintelligence/azure-ai-documentintelligence/pom.xml b/sdk/documentintelligence/azure-ai-documentintelligence/pom.xml index cad077bf8b77..09cf94b9aa67 100644 --- a/sdk/documentintelligence/azure-ai-documentintelligence/pom.xml +++ b/sdk/documentintelligence/azure-ai-documentintelligence/pom.xml @@ -57,7 +57,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -83,19 +83,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/dynatrace/azure-resourcemanager-dynatrace/pom.xml b/sdk/dynatrace/azure-resourcemanager-dynatrace/pom.xml index 408fe56efc97..832b36f78275 100644 --- a/sdk/dynatrace/azure-resourcemanager-dynatrace/pom.xml +++ b/sdk/dynatrace/azure-resourcemanager-dynatrace/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml index 77ac2b7e4e45..44d1c41221ee 100644 --- a/sdk/e2e/pom.xml +++ b/sdk/e2e/pom.xml @@ -59,7 +59,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.13 com.microsoft.azure @@ -82,7 +82,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -97,7 +97,7 @@ - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.13] com.microsoft.azure:azure-mgmt-graph-rbac:[1.3.0] diff --git a/sdk/easm/azure-analytics-defender-easm/pom.xml b/sdk/easm/azure-analytics-defender-easm/pom.xml index 9c246193a50f..0c2264a926d1 100644 --- a/sdk/easm/azure-analytics-defender-easm/pom.xml +++ b/sdk/easm/azure-analytics-defender-easm/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/edgezones/azure-resourcemanager-edgezones/pom.xml b/sdk/edgezones/azure-resourcemanager-edgezones/pom.xml index f1f98c92233d..35d5d000a858 100644 --- a/sdk/edgezones/azure-resourcemanager-edgezones/pom.xml +++ b/sdk/edgezones/azure-resourcemanager-edgezones/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/education/azure-resourcemanager-education/pom.xml b/sdk/education/azure-resourcemanager-education/pom.xml index f8593edbf86e..81456d7106ae 100644 --- a/sdk/education/azure-resourcemanager-education/pom.xml +++ b/sdk/education/azure-resourcemanager-education/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/elastic/azure-resourcemanager-elastic/pom.xml b/sdk/elastic/azure-resourcemanager-elastic/pom.xml index 3e852d6f1ca3..47028aa33628 100644 --- a/sdk/elastic/azure-resourcemanager-elastic/pom.xml +++ b/sdk/elastic/azure-resourcemanager-elastic/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml b/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml index e6ff5bb01278..29bc79ba9ddf 100644 --- a/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml +++ b/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml b/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml index 4e62d3f8c880..2e2090191451 100644 --- a/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml +++ b/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml @@ -106,19 +106,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/eventgrid/azure-messaging-eventgrid-namespaces/pom.xml b/sdk/eventgrid/azure-messaging-eventgrid-namespaces/pom.xml index d2e10bffcfdb..5e712ff941b8 100644 --- a/sdk/eventgrid/azure-messaging-eventgrid-namespaces/pom.xml +++ b/sdk/eventgrid/azure-messaging-eventgrid-namespaces/pom.xml @@ -63,13 +63,13 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -87,7 +87,7 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/eventgrid/azure-messaging-eventgrid/pom.xml b/sdk/eventgrid/azure-messaging-eventgrid/pom.xml index 1ed59cb8bcec..49f80af417bb 100644 --- a/sdk/eventgrid/azure-messaging-eventgrid/pom.xml +++ b/sdk/eventgrid/azure-messaging-eventgrid/pom.xml @@ -107,19 +107,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -131,7 +131,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml b/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml index fa397dafd9b0..f182c6654b23 100644 --- a/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml +++ b/sdk/eventgrid/azure-resourcemanager-eventgrid/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/eventgrid/microsoft-azure-eventgrid/pom.xml b/sdk/eventgrid/microsoft-azure-eventgrid/pom.xml index 430cba9e61d3..037db3b6f6a8 100644 --- a/sdk/eventgrid/microsoft-azure-eventgrid/pom.xml +++ b/sdk/eventgrid/microsoft-azure-eventgrid/pom.xml @@ -76,7 +76,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml index dd5e75dbc935..d1257f73b7cb 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml @@ -73,31 +73,31 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml index bbf6497d401e..16cc8b702139 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml @@ -59,31 +59,31 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml index b3c8e00ddbfd..5b5319279be5 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml @@ -33,7 +33,7 @@ org.springframework.boot spring-boot-starter - 2.7.18 + 3.3.0 com.azure @@ -79,7 +79,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.7.18 + 3.3.0 @@ -96,7 +96,7 @@ - org.springframework.boot:spring-boot-starter:[2.7.18] + org.springframework.boot:spring-boot-starter:[3.3.0] io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:[2.4.0-alpha] io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:[2.4.0-alpha] diff --git a/sdk/eventhubs/azure-messaging-eventhubs-track1-perf/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-track1-perf/pom.xml index 4392b942e42b..ba3d2124eff8 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-track1-perf/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-track1-perf/pom.xml @@ -33,7 +33,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 @@ -47,7 +47,7 @@ - com.fasterxml.jackson.core:jackson-core:[2.13.5] + com.fasterxml.jackson.core:jackson-core:[2.17.1] com.microsoft.azure:azure-eventhubs-eph:[3.3.0] diff --git a/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml index ee7eb0f2d114..c5972d1115b1 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml @@ -51,19 +51,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml index 1d8934cbbdee..059f99840ef6 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml @@ -25,29 +25,29 @@ io.projectreactor reactor-core - 3.4.38 + 3.6.6 org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 org.codehaus.groovy groovy-jsr223 - 3.0.19 + 4.0.10 runtime @@ -55,12 +55,12 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 org.codehaus.janino janino - 3.1.10 + 3.1.12 diff --git a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml index 66681aad497f..926da025871e 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml @@ -69,31 +69,31 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml index eb45151f18e9..a35eea85f696 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml @@ -58,7 +58,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml index 3d60d1d7f810..71ccd4d85911 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml @@ -45,12 +45,12 @@ org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 @@ -62,7 +62,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml index f7eb35d52cb2..53ab1d9003eb 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml @@ -46,7 +46,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.13 @@ -71,7 +71,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -89,7 +89,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/face/azure-ai-vision-face/pom.xml b/sdk/face/azure-ai-vision-face/pom.xml index 7b7477302744..9bed44e3c38e 100644 --- a/sdk/face/azure-ai-vision-face/pom.xml +++ b/sdk/face/azure-ai-vision-face/pom.xml @@ -60,13 +60,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -84,7 +84,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/fluidrelay/azure-resourcemanager-fluidrelay/pom.xml b/sdk/fluidrelay/azure-resourcemanager-fluidrelay/pom.xml index d4ac185aa6a5..1771afef8cd7 100644 --- a/sdk/fluidrelay/azure-resourcemanager-fluidrelay/pom.xml +++ b/sdk/fluidrelay/azure-resourcemanager-fluidrelay/pom.xml @@ -72,13 +72,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/formrecognizer/azure-ai-formrecognizer-perf/pom.xml b/sdk/formrecognizer/azure-ai-formrecognizer-perf/pom.xml index 8fbfe5736354..23778fe0efae 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer-perf/pom.xml +++ b/sdk/formrecognizer/azure-ai-formrecognizer-perf/pom.xml @@ -53,7 +53,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 ${perf.test.mainClass} ${perf.test.imageName} diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml b/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml index 4c1da2f6ef09..cb00f71d7d2f 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml @@ -82,19 +82,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/frontdoor/azure-resourcemanager-frontdoor/pom.xml b/sdk/frontdoor/azure-resourcemanager-frontdoor/pom.xml index 2d381e87ced2..e69c390d3ddf 100644 --- a/sdk/frontdoor/azure-resourcemanager-frontdoor/pom.xml +++ b/sdk/frontdoor/azure-resourcemanager-frontdoor/pom.xml @@ -78,25 +78,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/graphservices/azure-resourcemanager-graphservices/pom.xml b/sdk/graphservices/azure-resourcemanager-graphservices/pom.xml index 0729bf2f2a3e..020181e5837f 100644 --- a/sdk/graphservices/azure-resourcemanager-graphservices/pom.xml +++ b/sdk/graphservices/azure-resourcemanager-graphservices/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hanaonazure/azure-resourcemanager-hanaonazure/pom.xml b/sdk/hanaonazure/azure-resourcemanager-hanaonazure/pom.xml index 0fb14c726a89..d2c10a8af04f 100644 --- a/sdk/hanaonazure/azure-resourcemanager-hanaonazure/pom.xml +++ b/sdk/hanaonazure/azure-resourcemanager-hanaonazure/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hardwaresecuritymodules/azure-resourcemanager-hardwaresecuritymodules/pom.xml b/sdk/hardwaresecuritymodules/azure-resourcemanager-hardwaresecuritymodules/pom.xml index 64ca5b4a31f4..4074e2fea04e 100644 --- a/sdk/hardwaresecuritymodules/azure-resourcemanager-hardwaresecuritymodules/pom.xml +++ b/sdk/hardwaresecuritymodules/azure-resourcemanager-hardwaresecuritymodules/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hdinsight/azure-resourcemanager-hdinsight-containers/pom.xml b/sdk/hdinsight/azure-resourcemanager-hdinsight-containers/pom.xml index 554d894f96be..a0770829fe8a 100644 --- a/sdk/hdinsight/azure-resourcemanager-hdinsight-containers/pom.xml +++ b/sdk/hdinsight/azure-resourcemanager-hdinsight-containers/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml b/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml index 97c22f798acd..7b9a07823510 100644 --- a/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml +++ b/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/healthcareapis/azure-resourcemanager-healthcareapis/pom.xml b/sdk/healthcareapis/azure-resourcemanager-healthcareapis/pom.xml index d8e096e16e61..30470bc65be6 100644 --- a/sdk/healthcareapis/azure-resourcemanager-healthcareapis/pom.xml +++ b/sdk/healthcareapis/azure-resourcemanager-healthcareapis/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -96,7 +96,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/healthinsights/azure-health-insights-cancerprofiling/pom.xml b/sdk/healthinsights/azure-health-insights-cancerprofiling/pom.xml index 517cdc3e5b06..95c6bced7ada 100644 --- a/sdk/healthinsights/azure-health-insights-cancerprofiling/pom.xml +++ b/sdk/healthinsights/azure-health-insights-cancerprofiling/pom.xml @@ -62,13 +62,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -86,7 +86,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/healthinsights/azure-health-insights-clinicalmatching/pom.xml b/sdk/healthinsights/azure-health-insights-clinicalmatching/pom.xml index 38036f1b16b0..ae8d2d39ba73 100644 --- a/sdk/healthinsights/azure-health-insights-clinicalmatching/pom.xml +++ b/sdk/healthinsights/azure-health-insights-clinicalmatching/pom.xml @@ -62,13 +62,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -86,7 +86,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/healthinsights/azure-health-insights-radiologyinsights/pom.xml b/sdk/healthinsights/azure-health-insights-radiologyinsights/pom.xml index 9e1822b48cf5..6852ab81b5e5 100644 --- a/sdk/healthinsights/azure-health-insights-radiologyinsights/pom.xml +++ b/sdk/healthinsights/azure-health-insights-radiologyinsights/pom.xml @@ -60,19 +60,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -90,7 +90,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hybridcompute/azure-resourcemanager-hybridcompute/pom.xml b/sdk/hybridcompute/azure-resourcemanager-hybridcompute/pom.xml index 75a4408c99a6..7bedc5ca4d64 100644 --- a/sdk/hybridcompute/azure-resourcemanager-hybridcompute/pom.xml +++ b/sdk/hybridcompute/azure-resourcemanager-hybridcompute/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/hybridconnectivity/azure-resourcemanager-hybridconnectivity/pom.xml b/sdk/hybridconnectivity/azure-resourcemanager-hybridconnectivity/pom.xml index d944b53b0adc..43bb035fd00c 100644 --- a/sdk/hybridconnectivity/azure-resourcemanager-hybridconnectivity/pom.xml +++ b/sdk/hybridconnectivity/azure-resourcemanager-hybridconnectivity/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml index d1d07bc5a323..504728440747 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hybridkubernetes/azure-resourcemanager-hybridkubernetes/pom.xml b/sdk/hybridkubernetes/azure-resourcemanager-hybridkubernetes/pom.xml index 7d8979934e8b..d69364ea0298 100644 --- a/sdk/hybridkubernetes/azure-resourcemanager-hybridkubernetes/pom.xml +++ b/sdk/hybridkubernetes/azure-resourcemanager-hybridkubernetes/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml b/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml index a88648bd5b53..551f865d4760 100644 --- a/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml +++ b/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/identity/azure-identity-broker-samples/pom.xml b/sdk/identity/azure-identity-broker-samples/pom.xml index 94121a1e79f7..8c1de4ea7694 100644 --- a/sdk/identity/azure-identity-broker-samples/pom.xml +++ b/sdk/identity/azure-identity-broker-samples/pom.xml @@ -143,7 +143,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 true diff --git a/sdk/identity/azure-identity-broker/pom.xml b/sdk/identity/azure-identity-broker/pom.xml index 437625be800a..c6558814c562 100644 --- a/sdk/identity/azure-identity-broker/pom.xml +++ b/sdk/identity/azure-identity-broker/pom.xml @@ -47,7 +47,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test diff --git a/sdk/identity/azure-identity-extensions/pom.xml b/sdk/identity/azure-identity-extensions/pom.xml index ad0067da6756..f43fc6d5f579 100644 --- a/sdk/identity/azure-identity-extensions/pom.xml +++ b/sdk/identity/azure-identity-extensions/pom.xml @@ -22,13 +22,13 @@ com.mysql mysql-connector-j - 8.0.33 + 8.3.0 provided org.postgresql postgresql - 42.3.9 + 42.7.3 provided @@ -48,7 +48,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -69,7 +69,7 @@ org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test @@ -91,8 +91,8 @@ - com.mysql:mysql-connector-j:[8.0.33] - org.postgresql:postgresql:[42.3.9] + com.mysql:mysql-connector-j:[8.3.0] + org.postgresql:postgresql:[42.7.3] diff --git a/sdk/identity/azure-identity/pom.xml b/sdk/identity/azure-identity/pom.xml index bf39f31453b3..4aa89f0137ac 100644 --- a/sdk/identity/azure-identity/pom.xml +++ b/sdk/identity/azure-identity/pom.xml @@ -62,19 +62,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -85,7 +85,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/identity/live-test-apps/identity-test-webapp/pom.xml b/sdk/identity/live-test-apps/identity-test-webapp/pom.xml index f3bf25869644..4a3ba7f718de 100644 --- a/sdk/identity/live-test-apps/identity-test-webapp/pom.xml +++ b/sdk/identity/live-test-apps/identity-test-webapp/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.18 + 3.3.0 com.azure diff --git a/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml b/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml index a11065138edd..fdd0491d8176 100644 --- a/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml +++ b/sdk/imagebuilder/azure-resourcemanager-imagebuilder/pom.xml @@ -77,19 +77,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -107,7 +107,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/informaticadatamanagement/azure-resourcemanager-informaticadatamanagement/pom.xml b/sdk/informaticadatamanagement/azure-resourcemanager-informaticadatamanagement/pom.xml index 385b065896c4..799592d2b45b 100644 --- a/sdk/informaticadatamanagement/azure-resourcemanager-informaticadatamanagement/pom.xml +++ b/sdk/informaticadatamanagement/azure-resourcemanager-informaticadatamanagement/pom.xml @@ -78,19 +78,19 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/iotcentral/azure-resourcemanager-iotcentral/pom.xml b/sdk/iotcentral/azure-resourcemanager-iotcentral/pom.xml index 35dba7412992..3be5edcc6e38 100644 --- a/sdk/iotcentral/azure-resourcemanager-iotcentral/pom.xml +++ b/sdk/iotcentral/azure-resourcemanager-iotcentral/pom.xml @@ -72,13 +72,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/iotfirmwaredefense/azure-resourcemanager-iotfirmwaredefense/pom.xml b/sdk/iotfirmwaredefense/azure-resourcemanager-iotfirmwaredefense/pom.xml index 254cd5bff476..36c60eb8459b 100644 --- a/sdk/iotfirmwaredefense/azure-resourcemanager-iotfirmwaredefense/pom.xml +++ b/sdk/iotfirmwaredefense/azure-resourcemanager-iotfirmwaredefense/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/iothub/azure-resourcemanager-iothub/pom.xml b/sdk/iothub/azure-resourcemanager-iothub/pom.xml index 196a6eed8d03..c4e14b73a184 100644 --- a/sdk/iothub/azure-resourcemanager-iothub/pom.xml +++ b/sdk/iothub/azure-resourcemanager-iothub/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/keyvault/azure-security-keyvault-administration/pom.xml b/sdk/keyvault/azure-security-keyvault-administration/pom.xml index 0057ecb36cd4..2f76d757b245 100644 --- a/sdk/keyvault/azure-security-keyvault-administration/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-administration/pom.xml @@ -64,19 +64,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -88,7 +88,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/keyvault/azure-security-keyvault-certificates/pom.xml b/sdk/keyvault/azure-security-keyvault-certificates/pom.xml index 97f76ed9cd04..754858983dac 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-certificates/pom.xml @@ -65,25 +65,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/keyvault/azure-security-keyvault-jca/pom.xml b/sdk/keyvault/azure-security-keyvault-jca/pom.xml index 1c373e4019ad..029b54b71226 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-jca/pom.xml @@ -46,14 +46,14 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 true org.slf4j slf4j-nop - 1.7.36 + 2.0.13 @@ -93,19 +93,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -115,7 +115,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 module-info.java @@ -125,7 +125,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 @@ -221,10 +221,10 @@ - com.fasterxml.jackson.core:jackson-databind:[2.13.5] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] org.conscrypt:conscrypt-openjdk-uber:[2.5.2] org.apache.httpcomponents:httpclient:[4.5.14] - org.slf4j:slf4j-nop:[1.7.36] + org.slf4j:slf4j-nop:[2.0.13] diff --git a/sdk/keyvault/azure-security-keyvault-keys/pom.xml b/sdk/keyvault/azure-security-keyvault-keys/pom.xml index 472934da7a60..ed7df9c6b4dc 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-keys/pom.xml @@ -69,25 +69,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/keyvault/azure-security-keyvault-perf/pom.xml b/sdk/keyvault/azure-security-keyvault-perf/pom.xml index f223a01e112a..2a3d38cfd5d5 100644 --- a/sdk/keyvault/azure-security-keyvault-perf/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-perf/pom.xml @@ -74,7 +74,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 ${perf.test.mainClass} ${perf.test.imageName} diff --git a/sdk/keyvault/azure-security-keyvault-secrets/pom.xml b/sdk/keyvault/azure-security-keyvault-secrets/pom.xml index c21115fa5250..db482fc5bb95 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-secrets/pom.xml @@ -77,19 +77,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -102,7 +102,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml b/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml index a13983946b2c..508b1c899c70 100644 --- a/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml +++ b/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml @@ -45,38 +45,38 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-nop - 1.7.36 + 2.0.13 test org.springframework spring-core - 5.3.32 + 6.1.8 test diff --git a/sdk/keyvault/microsoft-azure-keyvault-core/pom.xml b/sdk/keyvault/microsoft-azure-keyvault-core/pom.xml index f2539d107710..60f17ffa96a4 100644 --- a/sdk/keyvault/microsoft-azure-keyvault-core/pom.xml +++ b/sdk/keyvault/microsoft-azure-keyvault-core/pom.xml @@ -46,7 +46,7 @@ org.apache.commons commons-lang3 - 3.12.0 + 3.14.0 com.google.guava @@ -60,7 +60,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/keyvault/microsoft-azure-keyvault-extensions/pom.xml b/sdk/keyvault/microsoft-azure-keyvault-extensions/pom.xml index 205e16359d61..b243cfc03e6a 100644 --- a/sdk/keyvault/microsoft-azure-keyvault-extensions/pom.xml +++ b/sdk/keyvault/microsoft-azure-keyvault-extensions/pom.xml @@ -73,12 +73,12 @@ org.apache.commons commons-lang3 - 3.12.0 + 3.14.0 commons-codec commons-codec - 1.15 + 1.16.1 @@ -155,7 +155,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/kubernetesconfiguration/azure-resourcemanager-kubernetesconfiguration/pom.xml b/sdk/kubernetesconfiguration/azure-resourcemanager-kubernetesconfiguration/pom.xml index 6e3b473f8d12..31a6e3b53606 100644 --- a/sdk/kubernetesconfiguration/azure-resourcemanager-kubernetesconfiguration/pom.xml +++ b/sdk/kubernetesconfiguration/azure-resourcemanager-kubernetesconfiguration/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/kusto/azure-resourcemanager-kusto/pom.xml b/sdk/kusto/azure-resourcemanager-kusto/pom.xml index c2f27d9fef15..ba2168393c8b 100644 --- a/sdk/kusto/azure-resourcemanager-kusto/pom.xml +++ b/sdk/kusto/azure-resourcemanager-kusto/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -110,7 +110,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/largeinstance/azure-resourcemanager-largeinstance/pom.xml b/sdk/largeinstance/azure-resourcemanager-largeinstance/pom.xml index 86aeacab68e9..e63daf5ca234 100644 --- a/sdk/largeinstance/azure-resourcemanager-largeinstance/pom.xml +++ b/sdk/largeinstance/azure-resourcemanager-largeinstance/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/loadtesting/azure-developer-loadtesting/pom.xml b/sdk/loadtesting/azure-developer-loadtesting/pom.xml index 2d8778d88ef7..8044b09b36fe 100644 --- a/sdk/loadtesting/azure-developer-loadtesting/pom.xml +++ b/sdk/loadtesting/azure-developer-loadtesting/pom.xml @@ -53,7 +53,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/loadtesting/azure-resourcemanager-loadtesting/pom.xml b/sdk/loadtesting/azure-resourcemanager-loadtesting/pom.xml index 9c6b7fd17484..f4efe71f205e 100644 --- a/sdk/loadtesting/azure-resourcemanager-loadtesting/pom.xml +++ b/sdk/loadtesting/azure-resourcemanager-loadtesting/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml index dfb9e7f97c17..264fceb7b9e9 100644 --- a/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml +++ b/sdk/loganalytics/azure-resourcemanager-loganalytics/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/logic/azure-resourcemanager-logic/pom.xml b/sdk/logic/azure-resourcemanager-logic/pom.xml index a3a0399720ff..d70a3dbdcf4b 100644 --- a/sdk/logic/azure-resourcemanager-logic/pom.xml +++ b/sdk/logic/azure-resourcemanager-logic/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/logz/azure-resourcemanager-logz/pom.xml b/sdk/logz/azure-resourcemanager-logz/pom.xml index 8695923db382..dd88b2132274 100644 --- a/sdk/logz/azure-resourcemanager-logz/pom.xml +++ b/sdk/logz/azure-resourcemanager-logz/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/machinelearning/azure-resourcemanager-machinelearning/pom.xml b/sdk/machinelearning/azure-resourcemanager-machinelearning/pom.xml index da91b7bb95d0..5ef62b7b1379 100644 --- a/sdk/machinelearning/azure-resourcemanager-machinelearning/pom.xml +++ b/sdk/machinelearning/azure-resourcemanager-machinelearning/pom.xml @@ -90,19 +90,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -122,7 +122,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml b/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml index 48358860e8c9..a3d9b954ec4a 100644 --- a/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml +++ b/sdk/maintenance/azure-resourcemanager-maintenance/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/managedapplications/azure-resourcemanager-managedapplications/pom.xml b/sdk/managedapplications/azure-resourcemanager-managedapplications/pom.xml index 6416404b1ce5..6cd3a9d5eaf5 100644 --- a/sdk/managedapplications/azure-resourcemanager-managedapplications/pom.xml +++ b/sdk/managedapplications/azure-resourcemanager-managedapplications/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/managednetworkfabric/azure-resourcemanager-managednetworkfabric/pom.xml b/sdk/managednetworkfabric/azure-resourcemanager-managednetworkfabric/pom.xml index 406344d52d66..d554e7e2b7a0 100644 --- a/sdk/managednetworkfabric/azure-resourcemanager-managednetworkfabric/pom.xml +++ b/sdk/managednetworkfabric/azure-resourcemanager-managednetworkfabric/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/managementgroups/azure-resourcemanager-managementgroups/pom.xml b/sdk/managementgroups/azure-resourcemanager-managementgroups/pom.xml index cb910e559b9e..4f7fc5d8dc3e 100644 --- a/sdk/managementgroups/azure-resourcemanager-managementgroups/pom.xml +++ b/sdk/managementgroups/azure-resourcemanager-managementgroups/pom.xml @@ -75,19 +75,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -107,7 +107,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/maps/azure-maps-geolocation/pom.xml b/sdk/maps/azure-maps-geolocation/pom.xml index 4830fa7de5e4..ed697276232e 100644 --- a/sdk/maps/azure-maps-geolocation/pom.xml +++ b/sdk/maps/azure-maps-geolocation/pom.xml @@ -89,25 +89,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-maps-render/pom.xml b/sdk/maps/azure-maps-render/pom.xml index f217a93d1e05..3c4c06b12d02 100644 --- a/sdk/maps/azure-maps-render/pom.xml +++ b/sdk/maps/azure-maps-render/pom.xml @@ -98,25 +98,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-maps-route/pom.xml b/sdk/maps/azure-maps-route/pom.xml index 2d354cba76ee..c02814955bbd 100644 --- a/sdk/maps/azure-maps-route/pom.xml +++ b/sdk/maps/azure-maps-route/pom.xml @@ -104,25 +104,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-maps-search/pom.xml b/sdk/maps/azure-maps-search/pom.xml index c6fc5b072f42..fcd754cf40f1 100644 --- a/sdk/maps/azure-maps-search/pom.xml +++ b/sdk/maps/azure-maps-search/pom.xml @@ -104,25 +104,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-maps-timezone/pom.xml b/sdk/maps/azure-maps-timezone/pom.xml index b49b34070cf8..11334ad81f9d 100644 --- a/sdk/maps/azure-maps-timezone/pom.xml +++ b/sdk/maps/azure-maps-timezone/pom.xml @@ -100,25 +100,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-maps-traffic/pom.xml b/sdk/maps/azure-maps-traffic/pom.xml index d5d480be9aa1..7f5ab3ce4a4a 100644 --- a/sdk/maps/azure-maps-traffic/pom.xml +++ b/sdk/maps/azure-maps-traffic/pom.xml @@ -86,25 +86,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-maps-weather/pom.xml b/sdk/maps/azure-maps-weather/pom.xml index 3ca74c0fde97..8738d07f1cdc 100644 --- a/sdk/maps/azure-maps-weather/pom.xml +++ b/sdk/maps/azure-maps-weather/pom.xml @@ -101,25 +101,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/maps/azure-resourcemanager-maps/pom.xml b/sdk/maps/azure-resourcemanager-maps/pom.xml index c3853fafc943..6942e2377495 100644 --- a/sdk/maps/azure-resourcemanager-maps/pom.xml +++ b/sdk/maps/azure-resourcemanager-maps/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/mariadb/azure-resourcemanager-mariadb/pom.xml b/sdk/mariadb/azure-resourcemanager-mariadb/pom.xml index b2a3ef08cfbd..d7e66f9508b4 100644 --- a/sdk/mariadb/azure-resourcemanager-mariadb/pom.xml +++ b/sdk/mariadb/azure-resourcemanager-mariadb/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml b/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml index c6063e51fd3e..6779aecd6354 100644 --- a/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml +++ b/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/mediaservices/microsoft-azure-media/pom.xml b/sdk/mediaservices/microsoft-azure-media/pom.xml index 48507803b723..b683b19aaaa9 100644 --- a/sdk/mediaservices/microsoft-azure-media/pom.xml +++ b/sdk/mediaservices/microsoft-azure-media/pom.xml @@ -108,17 +108,17 @@ com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-annotations - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 io.jsonwebtoken diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml b/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml index 37c49668844e..ad2346ad7c9d 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml @@ -80,19 +80,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/migrationdiscoverysap/azure-resourcemanager-migrationdiscoverysap/pom.xml b/sdk/migrationdiscoverysap/azure-resourcemanager-migrationdiscoverysap/pom.xml index bb6d34063815..80eeb498ea81 100644 --- a/sdk/migrationdiscoverysap/azure-resourcemanager-migrationdiscoverysap/pom.xml +++ b/sdk/migrationdiscoverysap/azure-resourcemanager-migrationdiscoverysap/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/mixedreality/azure-mixedreality-authentication/pom.xml b/sdk/mixedreality/azure-mixedreality-authentication/pom.xml index 391fc7d0ea7a..464fc7874376 100644 --- a/sdk/mixedreality/azure-mixedreality-authentication/pom.xml +++ b/sdk/mixedreality/azure-mixedreality-authentication/pom.xml @@ -64,19 +64,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -88,7 +88,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/mixedreality/azure-resourcemanager-mixedreality/pom.xml b/sdk/mixedreality/azure-resourcemanager-mixedreality/pom.xml index 6cf4957457d5..5e189bd4eeb8 100644 --- a/sdk/mixedreality/azure-resourcemanager-mixedreality/pom.xml +++ b/sdk/mixedreality/azure-resourcemanager-mixedreality/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/mobilenetwork/azure-resourcemanager-mobilenetwork/pom.xml b/sdk/mobilenetwork/azure-resourcemanager-mobilenetwork/pom.xml index bc47b44950ff..d1e850b7dbf7 100644 --- a/sdk/mobilenetwork/azure-resourcemanager-mobilenetwork/pom.xml +++ b/sdk/mobilenetwork/azure-resourcemanager-mobilenetwork/pom.xml @@ -72,25 +72,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml b/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml index 95f7fa376ede..e552a57bc900 100644 --- a/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml +++ b/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml @@ -82,25 +82,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.assertj assertj-core - 3.22.0 + 3.25.3 test @@ -129,7 +129,7 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] diff --git a/sdk/mongocluster/azure-resourcemanager-mongocluster/pom.xml b/sdk/mongocluster/azure-resourcemanager-mongocluster/pom.xml index ee395a11a100..490daee17854 100644 --- a/sdk/mongocluster/azure-resourcemanager-mongocluster/pom.xml +++ b/sdk/mongocluster/azure-resourcemanager-mongocluster/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/monitor/azure-monitor-ingestion/pom.xml b/sdk/monitor/azure-monitor-ingestion/pom.xml index e5b0c2c75e58..b11ecdb9a76c 100644 --- a/sdk/monitor/azure-monitor-ingestion/pom.xml +++ b/sdk/monitor/azure-monitor-ingestion/pom.xml @@ -83,19 +83,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -107,7 +107,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml b/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml index 3415afeb716c..bc2e9d84762f 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml @@ -101,37 +101,37 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.assertj assertj-core - 3.22.0 + 3.25.3 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -193,7 +193,7 @@ org.awaitility awaitility - 4.2.0 + 4.2.1 test diff --git a/sdk/monitor/azure-monitor-query/pom.xml b/sdk/monitor/azure-monitor-query/pom.xml index caf7ad0a326c..24cfc0bbb597 100644 --- a/sdk/monitor/azure-monitor-query/pom.xml +++ b/sdk/monitor/azure-monitor-query/pom.xml @@ -57,19 +57,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/mysql/azure-resourcemanager-mysql/pom.xml b/sdk/mysql/azure-resourcemanager-mysql/pom.xml index d092cd0a02b2..bd3dcd6ac997 100644 --- a/sdk/mysql/azure-resourcemanager-mysql/pom.xml +++ b/sdk/mysql/azure-resourcemanager-mysql/pom.xml @@ -67,13 +67,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/mysqlflexibleserver/azure-resourcemanager-mysqlflexibleserver/pom.xml b/sdk/mysqlflexibleserver/azure-resourcemanager-mysqlflexibleserver/pom.xml index 8bab0209c58a..1197a50b5741 100644 --- a/sdk/mysqlflexibleserver/azure-resourcemanager-mysqlflexibleserver/pom.xml +++ b/sdk/mysqlflexibleserver/azure-resourcemanager-mysqlflexibleserver/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -97,7 +97,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/netapp/azure-resourcemanager-netapp/pom.xml b/sdk/netapp/azure-resourcemanager-netapp/pom.xml index ebac781e32b3..a9de52dc5d3c 100644 --- a/sdk/netapp/azure-resourcemanager-netapp/pom.xml +++ b/sdk/netapp/azure-resourcemanager-netapp/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/networkanalytics/azure-resourcemanager-networkanalytics/pom.xml b/sdk/networkanalytics/azure-resourcemanager-networkanalytics/pom.xml index 0803930b06f3..39cfa32dbee9 100644 --- a/sdk/networkanalytics/azure-resourcemanager-networkanalytics/pom.xml +++ b/sdk/networkanalytics/azure-resourcemanager-networkanalytics/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/networkcloud/azure-resourcemanager-networkcloud/pom.xml b/sdk/networkcloud/azure-resourcemanager-networkcloud/pom.xml index 0b172465d7bf..ab0ed9cec6fc 100644 --- a/sdk/networkcloud/azure-resourcemanager-networkcloud/pom.xml +++ b/sdk/networkcloud/azure-resourcemanager-networkcloud/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/networkfunction/azure-resourcemanager-networkfunction/pom.xml b/sdk/networkfunction/azure-resourcemanager-networkfunction/pom.xml index 1d344024caf8..bd41d98b9476 100644 --- a/sdk/networkfunction/azure-resourcemanager-networkfunction/pom.xml +++ b/sdk/networkfunction/azure-resourcemanager-networkfunction/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/newrelicobservability/azure-resourcemanager-newrelicobservability/pom.xml b/sdk/newrelicobservability/azure-resourcemanager-newrelicobservability/pom.xml index 1bae43d90c19..7f93751497f9 100644 --- a/sdk/newrelicobservability/azure-resourcemanager-newrelicobservability/pom.xml +++ b/sdk/newrelicobservability/azure-resourcemanager-newrelicobservability/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/nginx/azure-resourcemanager-nginx/pom.xml b/sdk/nginx/azure-resourcemanager-nginx/pom.xml index 793e8318135c..c304692dc76d 100644 --- a/sdk/nginx/azure-resourcemanager-nginx/pom.xml +++ b/sdk/nginx/azure-resourcemanager-nginx/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/notificationhubs/azure-resourcemanager-notificationhubs/pom.xml b/sdk/notificationhubs/azure-resourcemanager-notificationhubs/pom.xml index 501dc44b390c..c390de8234e6 100644 --- a/sdk/notificationhubs/azure-resourcemanager-notificationhubs/pom.xml +++ b/sdk/notificationhubs/azure-resourcemanager-notificationhubs/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/openai/azure-ai-openai-assistants/pom.xml b/sdk/openai/azure-ai-openai-assistants/pom.xml index abeda0bfbd28..636d98021948 100644 --- a/sdk/openai/azure-ai-openai-assistants/pom.xml +++ b/sdk/openai/azure-ai-openai-assistants/pom.xml @@ -107,25 +107,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -133,7 +133,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/openai/azure-ai-openai/pom.xml b/sdk/openai/azure-ai-openai/pom.xml index 3a5469080f80..633f86be0ec9 100644 --- a/sdk/openai/azure-ai-openai/pom.xml +++ b/sdk/openai/azure-ai-openai/pom.xml @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -118,19 +118,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/operationsmanagement/azure-resourcemanager-operationsmanagement/pom.xml b/sdk/operationsmanagement/azure-resourcemanager-operationsmanagement/pom.xml index 2abf14792a86..5e1b217b4e94 100644 --- a/sdk/operationsmanagement/azure-resourcemanager-operationsmanagement/pom.xml +++ b/sdk/operationsmanagement/azure-resourcemanager-operationsmanagement/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/oracledatabase/azure-resourcemanager-oracledatabase/pom.xml b/sdk/oracledatabase/azure-resourcemanager-oracledatabase/pom.xml index 5c43ff85fab9..ef2465fb3d44 100644 --- a/sdk/oracledatabase/azure-resourcemanager-oracledatabase/pom.xml +++ b/sdk/oracledatabase/azure-resourcemanager-oracledatabase/pom.xml @@ -77,19 +77,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/orbital/azure-resourcemanager-orbital/pom.xml b/sdk/orbital/azure-resourcemanager-orbital/pom.xml index a757bf3c7c2b..68c9c80152d9 100644 --- a/sdk/orbital/azure-resourcemanager-orbital/pom.xml +++ b/sdk/orbital/azure-resourcemanager-orbital/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/paloaltonetworks/azure-resourcemanager-paloaltonetworks-ngfw/pom.xml b/sdk/paloaltonetworks/azure-resourcemanager-paloaltonetworks-ngfw/pom.xml index 67d60e892f97..148362fa0448 100644 --- a/sdk/paloaltonetworks/azure-resourcemanager-paloaltonetworks-ngfw/pom.xml +++ b/sdk/paloaltonetworks/azure-resourcemanager-paloaltonetworks-ngfw/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -110,7 +110,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/parents/azure-client-sdk-parent/pom.xml b/sdk/parents/azure-client-sdk-parent/pom.xml index 8e2e1b2769a6..5b458a6390a4 100644 --- a/sdk/parents/azure-client-sdk-parent/pom.xml +++ b/sdk/parents/azure-client-sdk-parent/pom.xml @@ -270,7 +270,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -307,29 +307,28 @@ - - org.codehaus.mojo - animal-sniffer-maven-plugin - 1.23 - - - package - - check - - - ${animal.sniffer.skip} - - com.toasttab.android - gummy-bears-api-26 - 0.8.0 - - false - ${animal.sniffer.ignores} - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -372,7 +371,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 ${packageOutputDirectory} @@ -683,7 +682,7 @@ 3.13.0 true - true + false ${skipCompile} ${skipTestCompile} @@ -706,6 +705,7 @@ -Xlint:try -Xlint:unchecked -Xlint:varargs + -parameters @@ -1051,7 +1051,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 ${shade.skip} @@ -1659,7 +1659,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 ${graalvm.disable} --no-fallback ${nativeImage.buildArgs} -H:IncludeResources=.* diff --git a/sdk/parents/azure-data-sdk-parent/pom.xml b/sdk/parents/azure-data-sdk-parent/pom.xml index 2507f314f277..33b76bb56bb3 100644 --- a/sdk/parents/azure-data-sdk-parent/pom.xml +++ b/sdk/parents/azure-data-sdk-parent/pom.xml @@ -154,7 +154,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 ${packageOutputDirectory} diff --git a/sdk/parents/azure-sdk-parent/pom.xml b/sdk/parents/azure-sdk-parent/pom.xml index 3c408750b2a9..9bedadb40246 100644 --- a/sdk/parents/azure-sdk-parent/pom.xml +++ b/sdk/parents/azure-sdk-parent/pom.xml @@ -264,7 +264,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -288,7 +288,7 @@ org.apache.maven.plugins maven-install-plugin - 3.1.1 + 3.1.2 diff --git a/sdk/parents/clientcore-parent/pom.xml b/sdk/parents/clientcore-parent/pom.xml index 7c964e4aeeb6..ade5c56ce8ea 100644 --- a/sdk/parents/clientcore-parent/pom.xml +++ b/sdk/parents/clientcore-parent/pom.xml @@ -258,7 +258,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -439,7 +439,7 @@ org.apache.maven.plugins maven-install-plugin - 3.1.1 + 3.1.2 @@ -486,7 +486,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 ${packageOutputDirectory} @@ -1078,7 +1078,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 ${shade.skip} @@ -1686,7 +1686,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 ${graalvm.disable} --no-fallback ${nativeImage.buildArgs} -H:IncludeResources=.* diff --git a/sdk/peering/azure-resourcemanager-peering/pom.xml b/sdk/peering/azure-resourcemanager-peering/pom.xml index 57f62f657ce4..997ee1904955 100644 --- a/sdk/peering/azure-resourcemanager-peering/pom.xml +++ b/sdk/peering/azure-resourcemanager-peering/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/personalizer/azure-ai-personalizer/pom.xml b/sdk/personalizer/azure-ai-personalizer/pom.xml index 149a4c9e9bc2..fb0660551634 100644 --- a/sdk/personalizer/azure-ai-personalizer/pom.xml +++ b/sdk/personalizer/azure-ai-personalizer/pom.xml @@ -79,19 +79,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/playwrighttesting/azure-resourcemanager-playwrighttesting/pom.xml b/sdk/playwrighttesting/azure-resourcemanager-playwrighttesting/pom.xml index 84708fc66040..1045e4660dae 100644 --- a/sdk/playwrighttesting/azure-resourcemanager-playwrighttesting/pom.xml +++ b/sdk/playwrighttesting/azure-resourcemanager-playwrighttesting/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml b/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml index 0e1acec8f128..865fea09701f 100644 --- a/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml +++ b/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/postgresql/azure-resourcemanager-postgresql/pom.xml b/sdk/postgresql/azure-resourcemanager-postgresql/pom.xml index 0a1a748b8126..7f78006dbaae 100644 --- a/sdk/postgresql/azure-resourcemanager-postgresql/pom.xml +++ b/sdk/postgresql/azure-resourcemanager-postgresql/pom.xml @@ -67,13 +67,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/postgresqlflexibleserver/azure-resourcemanager-postgresqlflexibleserver/pom.xml b/sdk/postgresqlflexibleserver/azure-resourcemanager-postgresqlflexibleserver/pom.xml index ecc7fbfdf9cc..a324dc35852f 100644 --- a/sdk/postgresqlflexibleserver/azure-resourcemanager-postgresqlflexibleserver/pom.xml +++ b/sdk/postgresqlflexibleserver/azure-resourcemanager-postgresqlflexibleserver/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/powerbidedicated/azure-resourcemanager-powerbidedicated/pom.xml b/sdk/powerbidedicated/azure-resourcemanager-powerbidedicated/pom.xml index bd137c72ff14..49fc03d053f7 100644 --- a/sdk/powerbidedicated/azure-resourcemanager-powerbidedicated/pom.xml +++ b/sdk/powerbidedicated/azure-resourcemanager-powerbidedicated/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/providerhub/azure-resourcemanager-providerhub/pom.xml b/sdk/providerhub/azure-resourcemanager-providerhub/pom.xml index eceee1ea95e5..de6f0ffad11d 100644 --- a/sdk/providerhub/azure-resourcemanager-providerhub/pom.xml +++ b/sdk/providerhub/azure-resourcemanager-providerhub/pom.xml @@ -78,13 +78,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/purview/azure-analytics-purview-administration/pom.xml b/sdk/purview/azure-analytics-purview-administration/pom.xml index 8d208e7c55b6..fe593623118b 100644 --- a/sdk/purview/azure-analytics-purview-administration/pom.xml +++ b/sdk/purview/azure-analytics-purview-administration/pom.xml @@ -54,7 +54,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/purview/azure-analytics-purview-datamap/pom.xml b/sdk/purview/azure-analytics-purview-datamap/pom.xml index 752a5b77d0b4..b385afe08fd4 100644 --- a/sdk/purview/azure-analytics-purview-datamap/pom.xml +++ b/sdk/purview/azure-analytics-purview-datamap/pom.xml @@ -60,19 +60,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -90,7 +90,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/purview/azure-analytics-purview-scanning/pom.xml b/sdk/purview/azure-analytics-purview-scanning/pom.xml index ccfd7de42cf8..9406b6b7cc57 100644 --- a/sdk/purview/azure-analytics-purview-scanning/pom.xml +++ b/sdk/purview/azure-analytics-purview-scanning/pom.xml @@ -54,13 +54,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/purview/azure-analytics-purview-sharing/pom.xml b/sdk/purview/azure-analytics-purview-sharing/pom.xml index 74e7dd719900..41f6adc99412 100644 --- a/sdk/purview/azure-analytics-purview-sharing/pom.xml +++ b/sdk/purview/azure-analytics-purview-sharing/pom.xml @@ -60,13 +60,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test diff --git a/sdk/purview/azure-analytics-purview-workflow/pom.xml b/sdk/purview/azure-analytics-purview-workflow/pom.xml index efb07a65c480..44d926681dec 100644 --- a/sdk/purview/azure-analytics-purview-workflow/pom.xml +++ b/sdk/purview/azure-analytics-purview-workflow/pom.xml @@ -61,13 +61,13 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -85,7 +85,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/purview/azure-resourcemanager-purview/pom.xml b/sdk/purview/azure-resourcemanager-purview/pom.xml index 613be3846474..f67e1ff5aff9 100644 --- a/sdk/purview/azure-resourcemanager-purview/pom.xml +++ b/sdk/purview/azure-resourcemanager-purview/pom.xml @@ -67,19 +67,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -99,7 +99,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/quantum/azure-quantum-jobs/pom.xml b/sdk/quantum/azure-quantum-jobs/pom.xml index a611c81d9a2b..fff854d9aa47 100644 --- a/sdk/quantum/azure-quantum-jobs/pom.xml +++ b/sdk/quantum/azure-quantum-jobs/pom.xml @@ -64,7 +64,7 @@ org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/quantum/azure-resourcemanager-quantum/pom.xml b/sdk/quantum/azure-resourcemanager-quantum/pom.xml index 13cdb1f34b7c..b4b76803942f 100644 --- a/sdk/quantum/azure-resourcemanager-quantum/pom.xml +++ b/sdk/quantum/azure-resourcemanager-quantum/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/qumulo/azure-resourcemanager-qumulo/pom.xml b/sdk/qumulo/azure-resourcemanager-qumulo/pom.xml index 2faa44c4ac4e..2609272a6fbb 100644 --- a/sdk/qumulo/azure-resourcemanager-qumulo/pom.xml +++ b/sdk/qumulo/azure-resourcemanager-qumulo/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/quota/azure-resourcemanager-quota/pom.xml b/sdk/quota/azure-resourcemanager-quota/pom.xml index d92fe3acff99..ca63757b7e70 100644 --- a/sdk/quota/azure-resourcemanager-quota/pom.xml +++ b/sdk/quota/azure-resourcemanager-quota/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/recoveryservices/azure-resourcemanager-recoveryservices/pom.xml b/sdk/recoveryservices/azure-resourcemanager-recoveryservices/pom.xml index cbd43676a3de..3c5dc9b949e9 100644 --- a/sdk/recoveryservices/azure-resourcemanager-recoveryservices/pom.xml +++ b/sdk/recoveryservices/azure-resourcemanager-recoveryservices/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml b/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml index ed632888988e..e1c6f79a1edc 100644 --- a/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml +++ b/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml @@ -73,25 +73,25 @@ Code generated by Microsoft (R) AutoRest Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/recoveryservicesdatareplication/azure-resourcemanager-recoveryservicesdatareplication/pom.xml b/sdk/recoveryservicesdatareplication/azure-resourcemanager-recoveryservicesdatareplication/pom.xml index db2fb7b42192..20d7baa08e85 100644 --- a/sdk/recoveryservicesdatareplication/azure-resourcemanager-recoveryservicesdatareplication/pom.xml +++ b/sdk/recoveryservicesdatareplication/azure-resourcemanager-recoveryservicesdatareplication/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/recoveryservicessiterecovery/azure-resourcemanager-recoveryservicessiterecovery/pom.xml b/sdk/recoveryservicessiterecovery/azure-resourcemanager-recoveryservicessiterecovery/pom.xml index dc0bca640ae2..48b4c6dbd4b6 100644 --- a/sdk/recoveryservicessiterecovery/azure-resourcemanager-recoveryservicessiterecovery/pom.xml +++ b/sdk/recoveryservicessiterecovery/azure-resourcemanager-recoveryservicessiterecovery/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/redisenterprise/azure-resourcemanager-redisenterprise/pom.xml b/sdk/redisenterprise/azure-resourcemanager-redisenterprise/pom.xml index dd25b7238f81..18a01a553fe9 100644 --- a/sdk/redisenterprise/azure-resourcemanager-redisenterprise/pom.xml +++ b/sdk/redisenterprise/azure-resourcemanager-redisenterprise/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml b/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml index 0eb28a4801cc..31942d6134ec 100644 --- a/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml +++ b/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml @@ -61,19 +61,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -85,7 +85,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/reservations/azure-resourcemanager-reservations/pom.xml b/sdk/reservations/azure-resourcemanager-reservations/pom.xml index e127178ee408..d7368c548129 100644 --- a/sdk/reservations/azure-resourcemanager-reservations/pom.xml +++ b/sdk/reservations/azure-resourcemanager-reservations/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/resourceconnector/azure-resourcemanager-resourceconnector/pom.xml b/sdk/resourceconnector/azure-resourcemanager-resourceconnector/pom.xml index 451070fe5b3d..52078247f923 100644 --- a/sdk/resourceconnector/azure-resourcemanager-resourceconnector/pom.xml +++ b/sdk/resourceconnector/azure-resourcemanager-resourceconnector/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml index 214cae51e23e..a0bc6f649c35 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/resourcehealth/azure-resourcemanager-resourcehealth/pom.xml b/sdk/resourcehealth/azure-resourcemanager-resourcehealth/pom.xml index 3c166ae5a493..851c0c422b0c 100644 --- a/sdk/resourcehealth/azure-resourcemanager-resourcehealth/pom.xml +++ b/sdk/resourcehealth/azure-resourcemanager-resourcehealth/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml b/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml index 681e40684cbd..52f1581d8d00 100644 --- a/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml @@ -84,13 +84,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -126,7 +126,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -153,7 +153,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml b/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml index 50ac97a84ef2..295b5b742136 100644 --- a/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml @@ -89,13 +89,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -119,7 +119,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -152,7 +152,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml b/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml index 15f2a4878a3f..7ff4aeb5cb52 100644 --- a/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml @@ -65,19 +65,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -89,7 +89,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -130,7 +130,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml b/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml index c2c45da2e412..7263acafd9dc 100644 --- a/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml @@ -63,19 +63,19 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml b/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml index 8f89a0bb5beb..7836a294cddc 100644 --- a/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml @@ -94,19 +94,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml index 8d91bce5eda7..580b7aedf321 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml @@ -96,19 +96,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -141,7 +141,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml index 6c65cc311fb7..0862378e97c9 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml @@ -59,19 +59,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -104,7 +104,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml index 4e3b03fa1190..705af75362d7 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml @@ -60,19 +60,19 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -105,7 +105,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml b/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml index aae6a0cd6153..6a539678980f 100644 --- a/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml @@ -61,13 +61,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -85,7 +85,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -118,7 +118,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml b/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml index 7906d16b60c5..93340ae28b51 100644 --- a/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml @@ -69,19 +69,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -114,7 +114,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml b/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml index 966eef8c5f97..18c61477983a 100644 --- a/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml @@ -69,13 +69,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -87,7 +87,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -114,7 +114,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml b/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml index b4e394157c4b..ecc350ddf84e 100644 --- a/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml @@ -91,13 +91,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -109,7 +109,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -136,7 +136,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml b/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml index d302cedcbdec..2cffb6fb7287 100644 --- a/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -120,7 +120,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -147,7 +147,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml b/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml index ade06a469364..d32d4e32ffad 100644 --- a/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml @@ -67,7 +67,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -79,7 +79,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -106,7 +106,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-network/pom.xml b/sdk/resourcemanager/azure-resourcemanager-network/pom.xml index 051c92e241f2..f8a73f5e7e47 100644 --- a/sdk/resourcemanager/azure-resourcemanager-network/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-network/pom.xml @@ -69,13 +69,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -105,7 +105,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -132,7 +132,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml b/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml index 4f827b4545eb..d8327ac42cd3 100644 --- a/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml @@ -72,13 +72,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -90,7 +90,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -117,7 +117,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml b/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml index aee8635e397a..e75bff41db25 100644 --- a/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -90,7 +90,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -117,7 +117,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml b/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml index 24b44505940c..fc9c974f2c2a 100644 --- a/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml @@ -70,19 +70,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -94,13 +94,13 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -141,7 +141,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml index 336044cdfb6e..73212b08f7d3 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml @@ -99,7 +99,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 com.google.guava @@ -134,18 +134,18 @@ com.microsoft.sqlserver mssql-jdbc - 10.2.3.jre8 + 12.6.1.jre11 org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -197,10 +197,10 @@ org.apache.httpcomponents:httpclient:[4.5.14] io.fabric8:kubernetes-client:[6.12.1] com.jcraft:jsch:[0.1.55] - org.slf4j:slf4j-simple:[1.7.36] + org.slf4j:slf4j-simple:[2.0.13] com.google.guava:guava:[33.1.0-jre] com.github.docker-java:docker-java:[3.2.1] - com.microsoft.sqlserver:mssql-jdbc:[10.2.3.jre8] + com.microsoft.sqlserver:mssql-jdbc:[12.6.1.jre11] commons-net:commons-net:[3.9.0] com.github.spotbugs:spotbugs-annotations:[4.8.3] diff --git a/sdk/resourcemanager/azure-resourcemanager-search/pom.xml b/sdk/resourcemanager/azure-resourcemanager-search/pom.xml index 500c604e1a88..b08f6410a4f1 100644 --- a/sdk/resourcemanager/azure-resourcemanager-search/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-search/pom.xml @@ -63,13 +63,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -102,7 +102,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml b/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml index 872be0b7683d..4824c299450b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml @@ -63,13 +63,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -102,7 +102,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml b/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml index fadee8908073..1a12def2a751 100644 --- a/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -118,7 +118,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml b/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml index ec87a6d1e26b..23d6e9dd5317 100644 --- a/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml @@ -77,13 +77,13 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -122,7 +122,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-test/pom.xml b/sdk/resourcemanager/azure-resourcemanager-test/pom.xml index 165edeadc279..048baa581c4a 100644 --- a/sdk/resourcemanager/azure-resourcemanager-test/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-test/pom.xml @@ -80,7 +80,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml index adbcc0e466fd..9a499039f1af 100644 --- a/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml @@ -63,13 +63,13 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -102,7 +102,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanager/azure-resourcemanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager/pom.xml index 8e59cd7a87c7..2dfe7a6b47ef 100644 --- a/sdk/resourcemanager/azure-resourcemanager/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager/pom.xml @@ -196,19 +196,19 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -232,7 +232,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -293,7 +293,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml index b006bc498fd0..a9d1a7fd680f 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml @@ -83,13 +83,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -113,7 +113,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -140,7 +140,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml index 5c69de1d26e5..eba330b8dfd3 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml @@ -63,19 +63,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml index a6f90ea61c5f..1e3c1e8bffb9 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml @@ -93,19 +93,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -168,7 +168,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml index 00dc6d2dd2da..dea7a67be8e0 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml @@ -63,19 +63,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml index 7f806cb6f66d..ee8e1cc33394 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml @@ -59,19 +59,19 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -104,7 +104,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml index 8680ce7e8137..bfe6fe983c5c 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml @@ -68,19 +68,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -113,7 +113,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml index c96402b75e61..af40109b1400 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml @@ -68,13 +68,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -107,7 +107,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml index 8292a792fecd..cc9d1d0a0c6e 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml @@ -90,13 +90,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -135,7 +135,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml index 4edf1a0e724a..2fb9f699f02a 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml @@ -65,13 +65,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -113,7 +113,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -140,7 +140,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml index e9110f6b9dc9..425b2f93bcb2 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml @@ -69,13 +69,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test @@ -105,7 +105,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -132,7 +132,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml index 4d9bcb7bd7e7..f1bae130542a 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml @@ -69,19 +69,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -93,7 +93,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -127,7 +127,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml index 938b7a232374..990f16efbe78 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml @@ -62,13 +62,13 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -101,7 +101,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-test/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-test/pom.xml index eb041b0ef051..3945b1443255 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-test/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-test/pom.xml @@ -85,7 +85,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml index 7615f17ed1dd..25aa677ec046 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml @@ -129,19 +129,19 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test @@ -207,7 +207,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/resourcemover/azure-resourcemanager-resourcemover/pom.xml b/sdk/resourcemover/azure-resourcemanager-resourcemover/pom.xml index b557aea59e96..a05db33d6349 100644 --- a/sdk/resourcemover/azure-resourcemanager-resourcemover/pom.xml +++ b/sdk/resourcemover/azure-resourcemanager-resourcemover/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml index 4a94168440c3..53a907d51820 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml +++ b/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml @@ -68,37 +68,37 @@ com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -122,7 +122,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -152,8 +152,8 @@ org.apache.avro:avro:[1.11.3] - com.fasterxml.jackson.core:jackson-core:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] + com.fasterxml.jackson.core:jackson-core:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] diff --git a/sdk/schemaregistry/azure-data-schemaregistry-jsonschema/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry-jsonschema/pom.xml index 8ed1ebf620f5..04001e038456 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-jsonschema/pom.xml +++ b/sdk/schemaregistry/azure-data-schemaregistry-jsonschema/pom.xml @@ -61,25 +61,25 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -103,7 +103,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/schemaregistry/azure-data-schemaregistry/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry/pom.xml index 7c2a8c65692e..01cbfff2520d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/pom.xml +++ b/sdk/schemaregistry/azure-data-schemaregistry/pom.xml @@ -64,25 +64,25 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/scvmm/azure-resourcemanager-scvmm/pom.xml b/sdk/scvmm/azure-resourcemanager-scvmm/pom.xml index 9488f528b040..6cfa89ad1beb 100644 --- a/sdk/scvmm/azure-resourcemanager-scvmm/pom.xml +++ b/sdk/scvmm/azure-resourcemanager-scvmm/pom.xml @@ -77,19 +77,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/search/azure-search-documents/pom.xml b/sdk/search/azure-search-documents/pom.xml index 18a9d10ea56e..ad9f0c965e55 100644 --- a/sdk/search/azure-search-documents/pom.xml +++ b/sdk/search/azure-search-documents/pom.xml @@ -112,25 +112,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/security/azure-resourcemanager-security/pom.xml b/sdk/security/azure-resourcemanager-security/pom.xml index fe6a18e16c22..3aa508919863 100644 --- a/sdk/security/azure-resourcemanager-security/pom.xml +++ b/sdk/security/azure-resourcemanager-security/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml b/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml index c0d79d068f59..c22e4ae9fa3b 100644 --- a/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml +++ b/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -92,7 +92,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/selfhelp/azure-resourcemanager-selfhelp/pom.xml b/sdk/selfhelp/azure-resourcemanager-selfhelp/pom.xml index ecbc9f919533..ba05e1b287a3 100644 --- a/sdk/selfhelp/azure-resourcemanager-selfhelp/pom.xml +++ b/sdk/selfhelp/azure-resourcemanager-selfhelp/pom.xml @@ -78,25 +78,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/serialization/azure-json-gson/pom.xml b/sdk/serialization/azure-json-gson/pom.xml index d1a13a270b41..d0a68db3b084 100644 --- a/sdk/serialization/azure-json-gson/pom.xml +++ b/sdk/serialization/azure-json-gson/pom.xml @@ -86,19 +86,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/serialization/azure-json-reflect/pom.xml b/sdk/serialization/azure-json-reflect/pom.xml index 6c02fb0b82f1..9ba43a5692fa 100644 --- a/sdk/serialization/azure-json-reflect/pom.xml +++ b/sdk/serialization/azure-json-reflect/pom.xml @@ -79,7 +79,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 test @@ -92,19 +92,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/serialization/azure-json/pom.xml b/sdk/serialization/azure-json/pom.xml index 2bccd39b7e73..5f7ff9f7851b 100644 --- a/sdk/serialization/azure-json/pom.xml +++ b/sdk/serialization/azure-json/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -101,7 +101,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 test-jar @@ -176,7 +176,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.5 + 2.17.1 @@ -185,7 +185,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 @@ -224,7 +224,7 @@ - com.fasterxml.jackson.core:jackson-core:[2.13.5] + com.fasterxml.jackson.core:jackson-core:[2.17.1] diff --git a/sdk/serialization/azure-xml/pom.xml b/sdk/serialization/azure-xml/pom.xml index 860b06b06e46..15b4f897866a 100644 --- a/sdk/serialization/azure-xml/pom.xml +++ b/sdk/serialization/azure-xml/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -95,7 +95,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 test-jar diff --git a/sdk/servicebus/azure-messaging-servicebus-stress/pom.xml b/sdk/servicebus/azure-messaging-servicebus-stress/pom.xml index 37b583a3f010..bccd744d05e7 100644 --- a/sdk/servicebus/azure-messaging-servicebus-stress/pom.xml +++ b/sdk/servicebus/azure-messaging-servicebus-stress/pom.xml @@ -39,7 +39,7 @@ org.springframework.boot spring-boot-starter - 2.7.18 + 3.3.0 @@ -82,7 +82,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.7.18 + 3.3.0 @@ -99,7 +99,7 @@ - org.springframework.boot:spring-boot-starter:[2.7.18] + org.springframework.boot:spring-boot-starter:[3.3.0] io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:[2.4.0-alpha] io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:[2.4.0-alpha] diff --git a/sdk/servicebus/azure-messaging-servicebus/docs/pom.xml b/sdk/servicebus/azure-messaging-servicebus/docs/pom.xml index 3daff8d522d2..b3319769d773 100644 --- a/sdk/servicebus/azure-messaging-servicebus/docs/pom.xml +++ b/sdk/servicebus/azure-messaging-servicebus/docs/pom.xml @@ -27,22 +27,22 @@ org.apache.logging.log4j log4j-api - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-core - 2.17.2 + 2.23.1 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.23.1 org.codehaus.groovy groovy-jsr223 - 3.0.19 + 4.0.10 runtime @@ -50,12 +50,12 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 org.codehaus.janino janino - 3.1.10 + 3.1.12 diff --git a/sdk/servicebus/azure-messaging-servicebus/pom.xml b/sdk/servicebus/azure-messaging-servicebus/pom.xml index 73d0a4c2b7cb..add558dff7b0 100644 --- a/sdk/servicebus/azure-messaging-servicebus/pom.xml +++ b/sdk/servicebus/azure-messaging-servicebus/pom.xml @@ -103,31 +103,31 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/servicebus/microsoft-azure-servicebus/pom.xml b/sdk/servicebus/microsoft-azure-servicebus/pom.xml index 96a8b676b416..536414ec53bb 100644 --- a/sdk/servicebus/microsoft-azure-servicebus/pom.xml +++ b/sdk/servicebus/microsoft-azure-servicebus/pom.xml @@ -68,7 +68,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.13 org.asynchttpclient diff --git a/sdk/servicefabric/azure-resourcemanager-servicefabric/pom.xml b/sdk/servicefabric/azure-resourcemanager-servicefabric/pom.xml index bb81cd1ce640..4ac8405ff832 100644 --- a/sdk/servicefabric/azure-resourcemanager-servicefabric/pom.xml +++ b/sdk/servicefabric/azure-resourcemanager-servicefabric/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/servicenetworking/azure-resourcemanager-servicenetworking/pom.xml b/sdk/servicenetworking/azure-resourcemanager-servicenetworking/pom.xml index d3e1d7cdf268..9f3ddb0ade87 100644 --- a/sdk/servicenetworking/azure-resourcemanager-servicenetworking/pom.xml +++ b/sdk/servicenetworking/azure-resourcemanager-servicenetworking/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -110,7 +110,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/signalr/azure-resourcemanager-signalr/pom.xml b/sdk/signalr/azure-resourcemanager-signalr/pom.xml index bd24ddcb0bbf..b56a65e2689d 100644 --- a/sdk/signalr/azure-resourcemanager-signalr/pom.xml +++ b/sdk/signalr/azure-resourcemanager-signalr/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/sphere/azure-resourcemanager-sphere/pom.xml b/sdk/sphere/azure-resourcemanager-sphere/pom.xml index a17cde24d401..ad7c6c35aa86 100644 --- a/sdk/sphere/azure-resourcemanager-sphere/pom.xml +++ b/sdk/sphere/azure-resourcemanager-sphere/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index e1d96c7d1ea8..22d35d2401d5 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -41,6 +41,7 @@ This section includes changes in `spring-cloud-azure-starter-data-redis-lettuce` This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.18. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>18) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.9. (Note: 2020.0.x (x>6) and 2021.0.y (y>9) should be supported, but they aren't tested with this release.) @@ -66,6 +67,7 @@ This section includes changes in `spring-cloud-azure-service` module. This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3460-2024-06-03) for more details. + ## 5.12.0 (2024-05-09) - This release is compatible with Spring Boot 3.0.0-3.0.13, 3.1.0-3.1.8, 3.2.0-3.2.5. (Note: 3.0.x (x>13), 3.1.y (y>8) and 3.2.z (z>5) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.5, 2023.0.0-2023.0.1. (Note: 2022.0.x (x>5) and 2023.0.y (y>1) should be supported, but they aren't tested with this release.) @@ -79,6 +81,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.18. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>18) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.9. (Note: 2020.0.x (x>6) and 2021.0.y (y>9) should be supported, but they aren't tested with this release.) @@ -92,6 +95,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3450-2024-05-07) for more details. + ## 5.12.0-beta.1 (2024-04-10) - This release is compatible with Spring Boot 3.0.0-3.0.13, 3.1.0-3.1.8, 3.2.0-3.2.4. (Note: 3.0.x (x>13), 3.1.y (y>8) and 3.2.z (z>4) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.5, 2023.0.0-2023.0.0. (Note: 2022.0.x (x>5) and 2023.0.y (y>0) should be supported, but they aren't tested with this release.) @@ -102,6 +106,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. #### Other Changes - Switch to use `ServiceBusJmsConnectionFactory` from `azure-servicebus-jms` [#39612](https://github.com/Azure/azure-sdk-for-java/pull/39612). + ## 5.11.0 (2024-03-29) - This release is compatible with Spring Boot 3.0.0-3.0.13, 3.1.0-3.1.8, 3.2.0-3.2.4. (Note: 3.0.x (x>13), 3.1.y (y>8) and 3.2.z (z>4) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.5, 2023.0.0-2023.0.0. (Note: 2022.0.x (x>5) and 2023.0.y (y>0) should be supported, but they aren't tested with this release.) @@ -135,6 +140,7 @@ This section includes changes in `spring-cloud-azure-stream-binder-servicebus` m This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.18. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>18) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.9. (Note: 2020.0.x (x>6) and 2021.0.y (y>9) should be supported, but they aren't tested with this release.) @@ -160,6 +166,7 @@ This section includes changes in `spring-cloud-azure-stream-binder-servicebus` m This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3440-2024-03-28) for more details. + ## 5.10.0 (2024-03-01) - This release is compatible with Spring Boot 3.0.0-3.0.13, 3.1.0-3.1.8, 3.2.0-3.2.3. (Note: 3.0.x (x>13), 3.1.y (y>8) and 3.2.z (z>3) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.5, 2023.0.0-2023.0.0. (Note: 2022.0.x (x>5) and 2023.0.y (y>0) should be supported, but they aren't tested with this release.) @@ -173,6 +180,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.18. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>18) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.9. (Note: 2020.0.x (x>6) and 2021.0.y (y>9) should be supported, but they aren't tested with this release.) @@ -186,6 +194,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3430-2024-02-28) for more details. + ## 5.9.1 (2024-02-08) - This release is compatible with Spring Boot 3.0.0-3.0.13, 3.1.0-3.1.8, 3.2.0-3.2.2. (Note: 3.0.x (x>13), 3.1.y (y>8) and 3.2.z (z>2) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.4, 2023.0.0-2023.0.0. (Note: 2022.0.x (x>4) and 2023.0.y (y>0) should be supported, but they aren't tested with this release.) @@ -224,6 +233,7 @@ This section includes changes in `spring-cloud-azure-starter-appconfiguration-co This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.18. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>18) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.9. (Note: 2020.0.x (x>6) and 2021.0.y (y>9) should be supported, but they aren't tested with this release.) @@ -246,6 +256,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3420-2024-02-02) for more details. + ## 5.8.0 (2023-12-14) - This release is compatible with Spring Boot 3.0.0-3.0.13, 3.1.0-3.1.6, 3.2.0-3.2.0. (Note: 3.0.x (x>13), 3.1.y (y>6) and 3.2.z (z>0) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.4, 2023.0.0-2023.0.0. (Note: 2022.0.x (x>4) and 2023.0.y (y>0) should be supported, but they aren't tested with this release.) @@ -266,6 +277,7 @@ This section includes changes in `spring-cloud-azure-starter-appconfiguration-co This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.18. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>18) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.8. (Note: 2020.0.x (x>6) and 2021.0.y (y>8) should be supported, but they aren't tested with this release.) @@ -292,6 +304,7 @@ This section includes changes in `spring-cloud-azure-starter-appconfiguration-co This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3410-2023-12-14) for more details. + ## 5.7.0 (2023-11-07) - This release is compatible with Spring Boot 3.0.0-3.1.5. (Note: 3.1.x (x>3) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.4. (Note: 2022.0.x (x>4) should be supported, but they aren't tested with this release.) @@ -326,6 +339,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.17. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>17) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.8. (Note: 2020.0.x (x>6) and 2021.0.y (y>8) should be supported, but they aren't tested with this release.) @@ -397,6 +411,7 @@ This section includes changes in the `spring-integration-azure-servicebus` modul This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.16. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>16) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.8. (Note: 2020.0.x (x>6) and 2021.0.y (y>8) should be supported, but they aren't tested with this release.) @@ -434,6 +449,7 @@ This section includes changes in the `spring-integration-azure-servicebus` modul This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3390-2023-10-23) for more details. + ## 5.5.0 (2023-08-28) - This release is compatible with Spring Boot 3.0.0-3.1.2. (Note: 3.1.x (x>2) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.4. (Note: 2022.0.x (x>4) should be supported, but they aren't tested with this release.) @@ -447,6 +463,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.14. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>14) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.8. (Note: 2020.0.x (x>6) and 2021.0.y (y>8) should be supported, but they aren't tested with this release.) @@ -460,6 +477,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3380-2023-08-24) for more details. + ## 5.4.0 (2023-08-02) - This release is compatible with Spring Boot 3.0.0-3.1.0. (Note: 3.0.x (x>1) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.3. (Note: 2022.0.x (x>0) should be supported, but they aren't tested with this release.) @@ -488,6 +506,7 @@ This section includes changes in `spring-cloud-azure-starter-appconfiguration-co This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.13. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>11) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.7. (Note: 2020.0.x (x>6) and 2021.0.y (y>7) should be supported, but they aren't tested with this release.) @@ -546,6 +565,7 @@ Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure This section includes changes in `azure-spring-data-cosmos` module. Please refer to [azure-spring-data-cosmos/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md#3360-beta1-2023-06-28) for more details. + ## 5.3.0 (2023-06-28) - This release is compatible with Spring Boot 3.0.0-3.1.0. (Note: 3.0.x (x>1) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.3. (Note: 2022.0.x (x>0) should be supported, but they aren't tested with this release.) @@ -631,6 +651,7 @@ feature-management: - Fixes bug where Http Response wasn't checked before trying to use response [#35086](https://github.com/Azure/azure-sdk-for-java/pull/35086). - Fixes Tracing info for ContainerApp [#35086](https://github.com/Azure/azure-sdk-for-java/pull/35086). + ## 4.8.0 (2023-05-25) - This release is compatible with Spring Boot 2.5.0-2.5.15, 2.6.0-2.6.15, 2.7.0-2.7.11. (Note: 2.5.x (x>15), 2.6.y (y>15) and 2.7.z (z>11) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.6, 2021.0.0-2021.0.7. (Note: 2020.0.x (x>6) and 2021.0.y (y>7) should be supported, but they aren't tested with this release.) @@ -692,6 +713,7 @@ feature-management: - Fixes bug where Http Response wasn't checked before trying to use response [#35086](https://github.com/Azure/azure-sdk-for-java/pull/35086). - Fixes Tracing info for ContainerApp [#35086](https://github.com/Azure/azure-sdk-for-java/pull/35086). + ## 5.1.0 (2023-04-26) - This release is compatible with Spring Boot 3.0.0-3.0.5. (Note: 3.0.x (x>1) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2022.0.0-2022.0.2. (Note: 2022.0.x (x>0) should be supported, but they aren't tested with this release.) @@ -713,8 +735,8 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. #### Breaking Changes - Deprecated properties for AAD and AAD B2C. [#33751](https://github.com/Azure/azure-sdk-for-java/pull/33751). - - Deprecated properties `spring.cloud.azure.active-directory.jwt-connect-timeout`, `spring.cloud.azure.active-directory.jwt-read-timeout`, `spring.cloud.azure.active-directory.jwt-size-limit`, if you want to configure them, please provide a RestOperations bean. - - Deprecated properties `spring.cloud.azure.active-directory.b2c.jwt-connect-timeout`, `spring.cloud.azure.active-directory.b2c.jwt-read-timeout`, `spring.cloud.azure.active-directory.b2c.jwt-size-limit`, if you want to configure them, please provide a RestOperations bean. + - Deprecated properties `spring.cloud.azure.active-directory.jwt-connect-timeout`, `spring.cloud.azure.active-directory.jwt-read-timeout`, `spring.cloud.azure.active-directory.jwt-size-limit`, if you want to configure them, please provide a RestOperations bean. + - Deprecated properties `spring.cloud.azure.active-directory.b2c.jwt-connect-timeout`, `spring.cloud.azure.active-directory.b2c.jwt-read-timeout`, `spring.cloud.azure.active-directory.b2c.jwt-size-limit`, if you want to configure them, please provide a RestOperations bean. ### Spring Messaging Event Hubs This section includes changes in `spring-messaging-azure-eventhubs` module. @@ -770,6 +792,9 @@ First release of the Spring Cloud Azure Appconfiguration Config, to support Spri - spring-cloud-azure-feature-management - spring-cloud-azure-feature-management-web +#### Features Added +- The module `azure-spring-data-cosmos` was moved from sdk/cosmos to sdk/spring - See [PR 33905](https://github.com/Azure/azure-sdk-for-java/pull/33905) + ### Spring Messaging Event Hubs This section includes changes in `spring-messaging-azure-eventhubs` module. @@ -966,6 +991,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Fix Bug: NoClassDefFoundError for JSONArray. [31716](https://github.com/Azure/azure-sdk-for-java/issues/31716) - Fix bug: `spring.main.sources` configuration from Spring Cloud Stream Kafka binder cannot take effect. [#31715](https://github.com/Azure/azure-sdk-for-java/pull/31715) + ## 4.4.1 (2022-10-31) ### Spring Cloud Azure Autoconfigure @@ -981,6 +1007,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Fix Bug: NoClassDefFoundError for JSONArray. [31716](https://github.com/Azure/azure-sdk-for-java/issues/31716) - Fix bug: `spring.main.sources` configuration from Spring Cloud Stream Kafka binder cannot take effect. [#31715](https://github.com/Azure/azure-sdk-for-java/pull/31715) + ## 6.0.0-beta.2 (2022-09-30) Upgrade Spring Boot dependencies version to 3.0.0-M4 and Spring Cloud dependencies version to 2022.0.0-M4. @@ -1012,6 +1039,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Fix the Service Bus Binder cannot automatically create Topic/Subscriptions from consumer bug. [#30722](https://github.com/Azure/azure-sdk-for-java/pull/30722). - Fix the cloud type cannot be configured for Service Bus Binder bug [#30936](https://github.com/Azure/azure-sdk-for-java/issues/30936). + ## 4.4.0 (2022-09-26) Upgrade Spring Boot dependencies version to 2.7.3 and Spring Cloud dependencies version to 2021.0.3 Upgrade Spring Boot dependencies version to 2.7.2 and Spring Cloud dependencies version to 2021.0.3. @@ -1050,6 +1078,7 @@ This section includes changes in `spring-cloud-azure-starter` module. #### Features Added + Support Azure hosted PostgreSQL and MySQL services authenticating with Azure AD [#30024](https://github.com/Azure/azure-sdk-for-java/pull/30024). + ## 4.3.0 (2022-06-29) - This release is compatible with Spring Boot 2.5.0-2.5.14, 2.6.0-2.6.9, 2.7.0-2.7.1. (Note: 2.5.x (x>14), 2.6.y (y>9) and 2.7.z (z>1) should be supported, but they aren't tested with this release.) - This release is compatible with Spring Cloud 2020.0.3-2020.0.5, 2021.0.0-2021.0.3. (Note: 2020.0.x (x>5) and 2021.0.y (y>3) should be supported, but they aren't tested with this release.) diff --git a/sdk/spring/README.md b/sdk/spring/README.md index 631dfac52a4a..cef042e1f412 100644 --- a/sdk/spring/README.md +++ b/sdk/spring/README.md @@ -139,7 +139,7 @@ If you’re a Maven user, add our BOM to your pom.xml `` s com.azure.spring spring-cloud-azure-dependencies - 4.19.0 + 5.13.0 pom import diff --git a/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md b/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md index 204eb85087bb..4fd28e32fd80 100644 --- a/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md +++ b/sdk/spring/azure-spring-data-cosmos/CHANGELOG.md @@ -1,5 +1,6 @@ ## Release History +### 5.14.0-beta.1 (Unreleased) ### 3.47.0-beta.1 (Unreleased) #### Features Added diff --git a/sdk/spring/azure-spring-data-cosmos/README.md b/sdk/spring/azure-spring-data-cosmos/README.md index 984f023f9167..48cb2c1258cf 100644 --- a/sdk/spring/azure-spring-data-cosmos/README.md +++ b/sdk/spring/azure-spring-data-cosmos/README.md @@ -58,13 +58,13 @@ Mapping from **Spring Boot** / **Spring Cloud** version to **Azure Spring Data C | 2.4.x | 2020.0.x | 3.5.0 - 3.7.0 | ### I'm Using Spring Boot Version X -If you are using **Spring Boot** in your project, you can find related **Azure Spring Data Cosmos** versions from above table. For example: if you are using **Spring Boot** 2.7.x, you should use **Azure Spring Data Cosmos** versions 3.23.0 and above. +If you are using **Spring Boot** in your project, you can find related **Azure Spring Data Cosmos** versions from above table. For example: if you are using **Spring Boot** 3.0.x, you should use **Azure Spring Data Cosmos** versions 5.3.0 and above. ### I'm Using Spring Cloud Version Y -If you are using **Spring Cloud** in your project, you can also find related **Azure Spring Data Cosmos** versions from above table. For example, if you are using **Spring Cloud** 2021.0.x, you should use **Azure Spring Data Cosmos** versions 3.23.0 and above. +If you are using **Spring Cloud** in your project, you can also find related **Azure Spring Data Cosmos** versions from above table. For example, if you are using **Spring Cloud** 2022.0.x, you should use **Azure Spring Data Cosmos** versions 5.3.0 and above. ## Spring Data Version Support -This project supports `spring-data-commons 2.7.x` versions. +This project supports `spring-data-commons 3.0.x` versions. The above setup does not allow you to override individual dependencies using a property as explained above. To achieve the same result, you’d need to add an entry in the dependencyManagement of your project before the `spring-boot-dependencies` entry. For instance, to upgrade to another Spring Data release train you’d add the following to your pom.xml. ```xml @@ -100,7 +100,7 @@ If you are using Maven, add the following dependency. com.azure azure-spring-data-cosmos - 3.46.0 + 5.13.0 ``` [//]: # ({x-version-update-end}) @@ -303,7 +303,7 @@ public CosmosConfig cosmosConfig() { - Containers will be created automatically unless you don't want them to. Set `autoCreateContainer` to false in `@Container` annotation to disable auto creation of containers. -- Note: If you are using provisioned throughput, you can optionally specify different ru values to customize request units for the container created by the SDK. The minimum ru should be 400 +- Note: By default request units assigned to newly created containers is 400. Specify different ru value to customize request units for the container created by the SDK (minimum RU value is 400). ```java readme-sample-User @Container(containerName = "myContainer", ru = "400") public class User { @@ -799,7 +799,7 @@ public class SecondaryDatasourceConfiguration { public CosmosAsyncClient getCosmosAsyncClient(@Qualifier("secondary") CosmosProperties secondaryProperties) { return CosmosFactory.createCosmosAsyncClient(new CosmosClientBuilder() .key(secondaryProperties.getKey()) - .endpoint(secondaryProperties.getUri()); + .endpoint(secondaryProperties.getUri())); } @Bean("secondaryCosmosConfig") @@ -838,7 +838,7 @@ public class SecondaryDatasourceConfiguration { public CosmosAsyncClient getCosmosAsyncClient(@Qualifier("secondary") CosmosProperties secondaryProperties) { return CosmosFactory.createCosmosAsyncClient(new CosmosClientBuilder() .key(secondaryProperties.getKey()) - .endpoint(secondaryProperties.getUri()); + .endpoint(secondaryProperties.getUri())); } @Bean("secondaryCosmosConfig") diff --git a/sdk/spring/azure-spring-data-cosmos/pom.xml b/sdk/spring/azure-spring-data-cosmos/pom.xml index 59d2f21894e1..304bcf256e89 100644 --- a/sdk/spring/azure-spring-data-cosmos/pom.xml +++ b/sdk/spring/azure-spring-data-cosmos/pom.xml @@ -12,7 +12,7 @@ com.azure azure-spring-data-cosmos - 3.47.0-beta.1 + 5.14.0-beta.1 jar Spring Data for Azure Cosmos DB SQL API Spring Data for Azure Cosmos DB SQL API @@ -51,7 +51,7 @@ org.springframework spring-core - 5.3.32 + 6.1.8 commons-logging @@ -62,27 +62,27 @@ org.springframework spring-web - 5.3.32 + 6.1.8 org.springframework spring-beans - 5.3.32 + 6.1.8 org.springframework spring-context - 5.3.32 + 6.1.8 org.springframework spring-tx - 5.3.32 + 6.1.8 org.springframework.data spring-data-commons - 2.7.18 + 3.3.0 org.slf4j @@ -93,7 +93,7 @@ org.springframework spring-expression - 5.3.32 + 6.1.8 com.azure @@ -103,12 +103,17 @@ com.fasterxml.jackson.module jackson-module-parameter-names - 2.13.5 + 2.17.1 com.fasterxml.jackson.datatype jackson-datatype-jdk8 - 2.13.5 + 2.17.1 + + + com.fasterxml.jackson.core + jackson-annotations + 2.17.1 org.javatuples @@ -123,14 +128,14 @@ org.apache.commons commons-lang3 - 3.12.0 + 3.14.0 org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -138,13 +143,13 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test @@ -156,7 +161,7 @@ org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 test @@ -168,13 +173,13 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test + 2.0.13 org.junit.vintage junit-vintage-engine - 5.9.3 + 5.10.2 test @@ -211,6 +216,38 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + org.apache.maven.plugins maven-enforcer-plugin @@ -219,19 +256,20 @@ - org.springframework:spring-beans:[5.3.32] - org.springframework:spring-web:[5.3.32] - org.springframework:spring-tx:[5.3.32] - org.springframework:spring-expression:[5.3.32] - org.springframework:spring-core:[5.3.32] - org.springframework:spring-context:[5.3.32] - org.springframework.data:spring-data-commons:[2.7.18] + org.springframework:spring-beans:[6.1.8] + org.springframework:spring-web:[6.1.8] + org.springframework:spring-tx:[6.1.8] + org.springframework:spring-expression:[6.1.8] + org.springframework:spring-core:[6.1.8] + org.springframework:spring-context:[6.1.8] + org.springframework.data:spring-data-commons:[3.3.0] org.javatuples:javatuples:[1.2] - com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[2.13.5] - com.fasterxml.jackson.module:jackson-module-parameter-names:[2.13.5] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[2.17.1] + com.fasterxml.jackson.module:jackson-module-parameter-names:[2.17.1] javax.annotation:javax.annotation-api:[1.3.2] - org.apache.commons:commons-lang3:[3.12.0] - org.slf4j:slf4j-api:[1.7.36] + org.apache.commons:commons-lang3:[3.14.0] + org.slf4j:slf4j-api:[2.0.13] diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/CosmosUtils.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/CosmosUtils.java index 362f69b875e5..f0294fdd6cb7 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/CosmosUtils.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/CosmosUtils.java @@ -19,6 +19,12 @@ */ public class CosmosUtils { + /** + * Creates an instance of {@link CosmosUtils} + */ + public CosmosUtils() { + } + private static final Logger LOGGER = LoggerFactory.getLogger(CosmosUtils.class); /** diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/ExpressionResolver.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/ExpressionResolver.java index 2d4261016a72..0699a7c91c49 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/ExpressionResolver.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/ExpressionResolver.java @@ -8,7 +8,7 @@ import org.springframework.beans.factory.config.EmbeddedValueResolver; /** - * + * Expression Resolver class. * @author Domenico Sibilio * */ diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/Memoizer.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/Memoizer.java index f628528e0e04..c021181f0753 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/Memoizer.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/Memoizer.java @@ -8,6 +8,9 @@ /** * Memoize function computation results + * + * @param the type of the input to the function. + * @param the type of the output of the function. */ public final class Memoizer { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/package-info.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/package-info.java index 8d421f5a0492..4e9a93c7820c 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/package-info.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/common/package-info.java @@ -2,6 +2,6 @@ // Licensed under the MIT License. /** - * This package contains the classes of utils for cosmosdb + * Azure Event Hubs service abstraction. */ package com.azure.spring.data.cosmos.common; diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/AbstractCosmosConfiguration.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/AbstractCosmosConfiguration.java index eedc74669393..a7302a376f6e 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/AbstractCosmosConfiguration.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/AbstractCosmosConfiguration.java @@ -24,6 +24,12 @@ @Configuration public abstract class AbstractCosmosConfiguration extends CosmosConfigurationSupport { + /** + * Creates an instance of {@link AbstractCosmosConfiguration}. + */ + public AbstractCosmosConfiguration() { + } + /** * Declare CosmosFactory bean. * diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/CosmosConfigurationSupport.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/CosmosConfigurationSupport.java index 60c48d3e392e..d4c872968c0e 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/CosmosConfigurationSupport.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/config/CosmosConfigurationSupport.java @@ -25,6 +25,12 @@ */ public abstract class CosmosConfigurationSupport { + /** + * Creates an instance of {@link CosmosConfigurationSupport}. + */ + public CosmosConfigurationSupport() { + } + /** * Return the name of the database to connect to * diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/convert/ObjectMapperFactory.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/convert/ObjectMapperFactory.java index 0a17f100a468..c9959f067814 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/convert/ObjectMapperFactory.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/convert/ObjectMapperFactory.java @@ -13,6 +13,13 @@ * Factory class for object mapper */ public class ObjectMapperFactory { + + /** + * Creates an instance of {@link ObjectMapperFactory}. + */ + public ObjectMapperFactory() { + } + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); static { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/CountQueryGenerator.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/CountQueryGenerator.java index 5540a7b5dda9..10a3a1c57696 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/CountQueryGenerator.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/CountQueryGenerator.java @@ -10,6 +10,12 @@ */ public class CountQueryGenerator extends AbstractQueryGenerator implements QuerySpecGenerator { + /** + * Creates an instance of {@link CountQueryGenerator}. + */ + public CountQueryGenerator() { + } + @Override public SqlQuerySpec generateCosmos(CosmosQuery query) { return super.generateCosmosCountQuery(query, "SELECT VALUE COUNT(1) FROM r"); diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/NativeQueryGenerator.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/NativeQueryGenerator.java index f3c6880b6e14..f12d64f76f94 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/NativeQueryGenerator.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/generator/NativeQueryGenerator.java @@ -15,9 +15,16 @@ */ public class NativeQueryGenerator { + /** + * Creates an instance of {@link NativeQueryGenerator}. + */ + public NativeQueryGenerator() { + } + private static final NativeQueryGenerator INSTANCE = new NativeQueryGenerator(); /** + * Return the native query generator instance. * @return The native query generator instance */ public static NativeQueryGenerator getInstance() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/BasicCosmosPersistentEntity.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/BasicCosmosPersistentEntity.java index b550e9a6239c..7655f85d1b96 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/BasicCosmosPersistentEntity.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/BasicCosmosPersistentEntity.java @@ -14,6 +14,8 @@ /** * Simple value object to capture information of {@link CosmosPersistentProperty}s. + * + * @param the type that is persisted. */ public class BasicCosmosPersistentEntity extends BasicPersistentEntity implements CosmosPersistentEntity, ApplicationContextAware { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosAuditingRegistrar.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosAuditingRegistrar.java index e79a9fc05025..43fb7a0f9770 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosAuditingRegistrar.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosAuditingRegistrar.java @@ -8,6 +8,7 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.core.Ordered; import org.springframework.data.auditing.IsNewAwareAuditingHandler; import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport; import org.springframework.data.auditing.config.AuditingConfiguration; @@ -19,7 +20,7 @@ * Adapted from MongoAuditingRegistrar.java */ -class CosmosAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport { +class CosmosAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport implements Ordered { /* * (non-Javadoc) @@ -39,6 +40,14 @@ protected String getAuditingHandlerBeanName() { return Constants.AUDITING_HANDLER_BEAN_NAME; } + @Override + protected void postProcess(BeanDefinitionBuilder builder, AuditingConfiguration configuration, BeanDefinitionRegistry registry) { + final BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(CosmosMappingContext.class); + definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR); + + builder.setFactoryMethod("from").addConstructorArgValue(definition.getBeanDefinition()); + } + /* * (non-Javadoc) * @see org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport# @@ -48,15 +57,8 @@ protected String getAuditingHandlerBeanName() { protected BeanDefinitionBuilder getAuditHandlerBeanDefinitionBuilder(AuditingConfiguration configuration) { Assert.notNull(configuration, "AuditingConfiguration must not be null!"); - final BeanDefinitionBuilder builder = - BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class); - - final BeanDefinitionBuilder definition = - BeanDefinitionBuilder.genericBeanDefinition(CosmosMappingContext.class); - definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR); - - builder.addConstructorArgValue(definition.getBeanDefinition()); - return configureDefaultAuditHandlerAttributes(configuration, builder); + return configureDefaultAuditHandlerAttributes(configuration, + BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class)); } /* @@ -72,4 +74,9 @@ protected void registerAuditListenerBeanDefinition(BeanDefinition auditingHandle // IsNewAwareAuditingHandler directly - this would require integrating CosmosTemplate with // the spring eventing system which would be a chunk of work beyond the scope of this PR } + + @Override + public int getOrder() { + return Ordered.LOWEST_PRECEDENCE; + } } diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosPersistentEntity.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosPersistentEntity.java index 570a12ed79ee..ae6e79f16644 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosPersistentEntity.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/CosmosPersistentEntity.java @@ -7,6 +7,8 @@ /** * Represents a cosmos persistent entity. + * + * @param the type that is persisted. */ public interface CosmosPersistentEntity extends PersistentEntity { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AbstractCosmosEventListener.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AbstractCosmosEventListener.java index 004b1ea0a56e..66371cac3dc5 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AbstractCosmosEventListener.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AbstractCosmosEventListener.java @@ -13,6 +13,7 @@ * Ported to cosmos from spring-data-mongo * https://github.com/spring-projects/spring-data-mongodb/blob/main/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AbstractMongoEventListener.java * + * @param the type of the event. */ public abstract class AbstractCosmosEventListener implements ApplicationListener> { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AfterLoadEvent.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AfterLoadEvent.java index 7691674fdb2d..7e89faa28a23 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AfterLoadEvent.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/AfterLoadEvent.java @@ -11,6 +11,8 @@ * * Ported to cosmos from spring-data-mongo * https://github.com/spring-projects/spring-data-mongodb/blob/main/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/AfterLoadEvent.java + * + * @param the type of the event. */ public class AfterLoadEvent extends CosmosMappingEvent { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/CosmosMappingEvent.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/CosmosMappingEvent.java index 4924cdd0b182..f60b8ba62eb7 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/CosmosMappingEvent.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/core/mapping/event/CosmosMappingEvent.java @@ -11,6 +11,8 @@ * * Ported to cosmos from spring-data-mongo * https://github.com/spring-projects/spring-data-mongodb/blob/main/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/event/MongoMappingEvent.java + * + * @param the type of the event. */ public class CosmosMappingEvent extends ApplicationEvent { @@ -41,6 +43,7 @@ public CosmosMappingEvent(T source, @Nullable JsonNode document, @Nullable Strin } /** + * Return {@literal null} if not set. * @return {@literal null} if not set. */ public @Nullable JsonNode getDocument() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/exception/CosmosExceptionUtils.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/exception/CosmosExceptionUtils.java index eb903d1217db..027d83f013b0 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/exception/CosmosExceptionUtils.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/exception/CosmosExceptionUtils.java @@ -14,6 +14,12 @@ */ public class CosmosExceptionUtils { + /** + * Creates an instance of {@link CosmosExceptionUtils} + */ + public CosmosExceptionUtils() { + } + /** * To throw a CosmosDBAccessException * diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/package-info.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/package-info.java index 04018a5aed64..987921e53dc0 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/package-info.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/package-info.java @@ -2,6 +2,6 @@ // Licensed under the MIT License. /** - * Cosmosdb class for spring + * Spring Cloud Azure's Service Bus JMS extension. */ package com.azure.spring.data.cosmos; diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/CosmosRepository.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/CosmosRepository.java index 5763e9695313..83c2b66f8f43 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/CosmosRepository.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/CosmosRepository.java @@ -6,6 +6,7 @@ import com.azure.cosmos.models.CosmosPatchItemRequestOptions; import com.azure.cosmos.models.CosmosPatchOperations; import com.azure.cosmos.models.PartitionKey; +import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.PagingAndSortingRepository; @@ -15,9 +16,13 @@ /** * Extension of {@link PagingAndSortingRepository} to provide additional methods to retrieve entities using the * pagination and sorting abstraction. + * + * @param domain type. + * @param id type. */ @NoRepositoryBean -public interface CosmosRepository extends PagingAndSortingRepository { +public interface CosmosRepository extends PagingAndSortingRepository, + CrudRepository { /** * Retrieves an entity by its id. diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/ReactiveCosmosRepository.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/ReactiveCosmosRepository.java index 0499e2e9c679..55dfc7d039f6 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/ReactiveCosmosRepository.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/ReactiveCosmosRepository.java @@ -6,14 +6,18 @@ import com.azure.cosmos.models.CosmosPatchOperations; import com.azure.cosmos.models.PartitionKey; import org.springframework.data.repository.NoRepositoryBean; +import org.springframework.data.repository.reactive.ReactiveCrudRepository; import org.springframework.data.repository.reactive.ReactiveSortingRepository; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** * Repository interface with search and delete operation + * + * @param the type of the domain class. + * @param the type of the id of the entity the repository manages. */ @NoRepositoryBean -public interface ReactiveCosmosRepository extends ReactiveSortingRepository { +public interface ReactiveCosmosRepository extends ReactiveSortingRepository, ReactiveCrudRepository { /** * Retrieves an entity by its id and partition key. diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoriesRegistrar.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoriesRegistrar.java index 9975dfbf92b2..ca3f211e07a8 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoriesRegistrar.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoriesRegistrar.java @@ -13,6 +13,12 @@ */ public class CosmosRepositoriesRegistrar extends RepositoryBeanDefinitionRegistrarSupport { + /** + * Creates an instance of {@link CosmosRepositoriesRegistrar}. + */ + public CosmosRepositoriesRegistrar() { + } + @Override protected Class getAnnotation() { return EnableCosmosRepositories.class; diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoryConfigurationExtension.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoryConfigurationExtension.java index 732dea8fcdbf..941ebdae6491 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoryConfigurationExtension.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/CosmosRepositoryConfigurationExtension.java @@ -24,6 +24,12 @@ */ public class CosmosRepositoryConfigurationExtension extends RepositoryConfigurationExtensionSupport { + /** + * Creates an instance of {@link CosmosRepositoryConfigurationExtension}. + */ + public CosmosRepositoryConfigurationExtension() { + } + @Override public String getModuleName() { return Constants.COSMOS_MODULE_NAME; diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoriesRegistrar.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoriesRegistrar.java index 60b59a81726a..91a138a890a6 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoriesRegistrar.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoriesRegistrar.java @@ -13,6 +13,12 @@ */ public class ReactiveCosmosRepositoriesRegistrar extends RepositoryBeanDefinitionRegistrarSupport { + /** + * Creates an instance of {@link ReactiveCosmosRepositoriesRegistrar}. + */ + public ReactiveCosmosRepositoriesRegistrar() { + } + @Override protected Class getAnnotation() { return EnableReactiveCosmosRepositories.class; diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoryConfigurationExtension.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoryConfigurationExtension.java index dfc7327fdcaf..fd4f5a86c2fd 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoryConfigurationExtension.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/config/ReactiveCosmosRepositoryConfigurationExtension.java @@ -24,6 +24,12 @@ */ public class ReactiveCosmosRepositoryConfigurationExtension extends RepositoryConfigurationExtensionSupport { + /** + * Creates an instance of {@link ReactiveCosmosRepositoryConfigurationExtension}. + */ + public ReactiveCosmosRepositoryConfigurationExtension() { + } + @Override public String getModuleName() { return Constants.COSMOS_MODULE_NAME; diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractCosmosQuery.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractCosmosQuery.java index 573da2e87276..684f7344f8ea 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractCosmosQuery.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractCosmosQuery.java @@ -93,21 +93,25 @@ public CosmosQueryMethod getQueryMethod() { protected abstract CosmosQuery createQuery(CosmosParameterAccessor accessor); /** + * Return whether this is a deletion query. * @return whether this is a deletion query. */ protected abstract boolean isDeleteQuery(); /** + * Return whether this is an exists query. * @return whether this is an exists query. */ protected abstract boolean isExistsQuery(); /** + * Return whether this is a count query. * @return whether this is a count query. */ protected abstract boolean isCountQuery(); /** + * Return whether this is a page query. * @return whether this is a page query. */ protected boolean isPageQuery() { @@ -115,6 +119,7 @@ protected boolean isPageQuery() { } /** + * Return whether this is a collection query. * @return whether this is a collection query. */ protected boolean isCollectionQuery() { @@ -122,6 +127,7 @@ protected boolean isCollectionQuery() { } /** + * Return whether this is a slice query. * @return whether this is a slice query. */ protected boolean isSliceQuery() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractReactiveCosmosQuery.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractReactiveCosmosQuery.java index 7cd5d059416e..f73d83894498 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractReactiveCosmosQuery.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/AbstractReactiveCosmosQuery.java @@ -95,21 +95,25 @@ public ReactiveCosmosQueryMethod getQueryMethod() { protected abstract CosmosQuery createQuery(ReactiveCosmosParameterAccessor accessor); /** + * Return whether this is a deletion query. * @return whether this is a deletion query. */ protected abstract boolean isDeleteQuery(); /** + * Return whether this is an exists query. * @return whether this is an exists query. */ protected abstract boolean isExistsQuery(); /** + * Return whether this is a count query. * @return whether this is a count query. */ protected abstract boolean isCountQuery(); /** + * Return whether this is a page query. * @return whether this is a page query. */ protected boolean isPageQuery() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosEntityMetadata.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosEntityMetadata.java index 204c69d55b3a..9a4ae56571e9 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosEntityMetadata.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosEntityMetadata.java @@ -6,6 +6,8 @@ /** * Metadata class to describe cosmos entity includes domain type and container information + * + * @param domain type. */ public interface CosmosEntityMetadata extends EntityMetadata { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameter.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameter.java index 90a3dddc2986..5bbc3ca93ed5 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameter.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameter.java @@ -4,6 +4,7 @@ import org.springframework.core.MethodParameter; import org.springframework.data.repository.query.Parameter; +import org.springframework.data.util.TypeInformation; /** * A single cosmos parameter of a query method. @@ -16,7 +17,7 @@ public class CosmosParameter extends Parameter { * @param parameter must not be {@literal null}. */ public CosmosParameter(MethodParameter parameter) { - super(parameter); + super(parameter, TypeInformation.of(CosmosParameter.class)); } @Override diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameters.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameters.java index 4ed1187a7969..a489c30d77b2 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameters.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/CosmosParameters.java @@ -2,7 +2,6 @@ // Licensed under the MIT License. package com.azure.spring.data.cosmos.repository.query; -import org.springframework.core.MethodParameter; import org.springframework.data.repository.query.Parameters; import java.lang.reflect.Method; @@ -18,8 +17,9 @@ public class CosmosParameters extends Parameters parameters) { @@ -31,8 +31,4 @@ protected CosmosParameters createFrom(List parameters) { return new CosmosParameters(parameters); } - @Override - protected CosmosParameter createParameter(MethodParameter parameter) { - return new CosmosParameter(parameter); - } } diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/ReactiveCosmosEntityMetadata.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/ReactiveCosmosEntityMetadata.java index 91e2505dd262..fe7e705fd07b 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/ReactiveCosmosEntityMetadata.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/ReactiveCosmosEntityMetadata.java @@ -6,6 +6,8 @@ /** * Metadata class to describe reactive cosmos entity includes domain type and container information + * + * @param domain type. */ public interface ReactiveCosmosEntityMetadata extends EntityMetadata { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleCosmosEntityMetadata.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleCosmosEntityMetadata.java index 45658a1df22a..eda0898f8f4c 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleCosmosEntityMetadata.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleCosmosEntityMetadata.java @@ -7,6 +7,8 @@ /** * Metadata class to describe simple cosmos entity includes domain type and cosmos entity information + * + * @param domain type. */ public class SimpleCosmosEntityMetadata implements CosmosEntityMetadata { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleReactiveCosmosEntityMetadata.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleReactiveCosmosEntityMetadata.java index f1f34110daaf..96e3410aacf9 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleReactiveCosmosEntityMetadata.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/query/SimpleReactiveCosmosEntityMetadata.java @@ -7,6 +7,8 @@ /** * Metadata class to describe simple reactive cosmos entity includes domain type and cosmos entity information + * + * @param domain type. */ public class SimpleReactiveCosmosEntityMetadata implements ReactiveCosmosEntityMetadata { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosEntityInformation.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosEntityInformation.java index f7aa464e0823..8e9fb6791129 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosEntityInformation.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosEntityInformation.java @@ -45,6 +45,9 @@ /** * Class to describe cosmosDb entity + * + * @param domain type. + * @param id type. */ public class CosmosEntityInformation extends AbstractEntityInformation { @@ -331,6 +334,7 @@ public Object getPartitionKeyFieldValue(T entity) { } /** + * Return the partition key field name. * @return the partition key field name */ public String getPartitionKeyFieldName() { @@ -380,6 +384,7 @@ public boolean isAutoScale() { } /** + * Return whether indexing policy is specified. * @return whether indexing policy is specified */ public boolean isIndexingPolicySpecified() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosRepositoryFactoryBean.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosRepositoryFactoryBean.java index 46e3cc2d8c6c..5e7593a65ea0 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosRepositoryFactoryBean.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/CosmosRepositoryFactoryBean.java @@ -15,6 +15,10 @@ /** * Adapter for Springs {@link FactoryBean} interface to allow easy setup of cosmos repository factories via Spring * configuration. + * + * @param the type of the repository. + * @param the domain type the repository manages. + * @param the type of the id of the entity the repository manages. */ public class CosmosRepositoryFactoryBean, S, ID extends Serializable> extends RepositoryFactoryBeanSupport { @@ -46,6 +50,7 @@ protected final RepositoryFactorySupport createRepositoryFactory() { } /** + * Return the factory instance. * @return the factory instance */ protected RepositoryFactorySupport getFactoryInstance() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/IndexPolicyCompareService.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/IndexPolicyCompareService.java index cd8fbc31134d..46e4c867b651 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/IndexPolicyCompareService.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/IndexPolicyCompareService.java @@ -15,6 +15,12 @@ */ public class IndexPolicyCompareService { + /** + * Creates an instance of {@link IndexPolicyCompareService}. + */ + public IndexPolicyCompareService() { + } + /** * Whether the policy needs updating. * diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/ReactiveCosmosRepositoryFactoryBean.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/ReactiveCosmosRepositoryFactoryBean.java index d46cc99ade06..2f560bff719e 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/ReactiveCosmosRepositoryFactoryBean.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/ReactiveCosmosRepositoryFactoryBean.java @@ -15,6 +15,10 @@ /** * Adapter for Springs {@link FactoryBean} interface to allow easy setup of reactive cosmos repository factories * via Spring configuration. + * + * @param the type of the repository. + * @param the domain type the repository manages. + * @param the type of the id of the entity the repository manages. */ public class ReactiveCosmosRepositoryFactoryBean, S, K extends Serializable> @@ -47,6 +51,7 @@ protected final RepositoryFactorySupport createRepositoryFactory() { } /** + * Return the factory instance. * @return the factory instance */ protected RepositoryFactorySupport getFactoryInstance() { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleCosmosRepository.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleCosmosRepository.java index 1ecec7bec4a2..43c8aa4f143d 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleCosmosRepository.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleCosmosRepository.java @@ -30,6 +30,9 @@ /** * Repository class for simple Cosmos operation + * + * @param domain type. + * @param id type. */ public class SimpleCosmosRepository implements CosmosRepository { diff --git a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleReactiveCosmosRepository.java b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleReactiveCosmosRepository.java index 9c1a6cbd2198..d1a1caab659b 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleReactiveCosmosRepository.java +++ b/sdk/spring/azure-spring-data-cosmos/src/main/java/com/azure/spring/data/cosmos/repository/support/SimpleReactiveCosmosRepository.java @@ -26,6 +26,9 @@ /** * Repository class for simple reactive Cosmos operation + * + * @param the type of the domain class managed by this repository. + * @param the type of the id of the domain class managed by this repository. */ public class SimpleReactiveCosmosRepository implements ReactiveCosmosRepository { diff --git a/sdk/spring/azure-spring-data-cosmos/src/test/java/com/azure/spring/data/cosmos/repository/repository/ReactiveTeacherRepository.java b/sdk/spring/azure-spring-data-cosmos/src/test/java/com/azure/spring/data/cosmos/repository/repository/ReactiveTeacherRepository.java index 997ec883b493..fb6816bfdd4b 100644 --- a/sdk/spring/azure-spring-data-cosmos/src/test/java/com/azure/spring/data/cosmos/repository/repository/ReactiveTeacherRepository.java +++ b/sdk/spring/azure-spring-data-cosmos/src/test/java/com/azure/spring/data/cosmos/repository/repository/ReactiveTeacherRepository.java @@ -20,7 +20,7 @@ public interface ReactiveTeacherRepository extends ReactiveCosmosRepository existsByLastNameIsNull(); - @Query(value = "SELECT * FROM a WHERE ARRAY_CONTAINS(@firstNames, a.firstName) order by a.id") + @Query(value = "SELECT * FROM a WHERE ARRAY_CONTAINS(@firstNames, a.firstName) order by a.id ") Flux annotatedFindByFirstNames(@Param("firstNames") List firstNames); @Query(value = "SELECT * FROM a WHERE ARRAY_CONTAINS(@firstNames, a.firstName) ") diff --git a/sdk/spring/ci.cosmos.yml b/sdk/spring/ci.cosmos.yml index 9ed4ed8aab46..57087eb64c71 100644 --- a/sdk/spring/ci.cosmos.yml +++ b/sdk/spring/ci.cosmos.yml @@ -34,6 +34,8 @@ extends: groupId: com.azure safeName: azurespringdatacosmos releaseInBatch: true + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* LanguageFilter: - Language=.*(Spring).* AdditionalModules: diff --git a/sdk/spring/ci.monitor.yml b/sdk/spring/ci.monitor.yml deleted file mode 100644 index 49b69b876527..000000000000 --- a/sdk/spring/ci.monitor.yml +++ /dev/null @@ -1,43 +0,0 @@ -# NOTE: Please refer to https://aka.ms/azsdk/engsys/ci-yaml before editing this file. - -trigger: - branches: - include: - - main - - feature/* - - hotfix/* - - release/* - paths: - include: - - sdk/spring/ci.monitor.yml - - sdk/spring/spring-cloud-azure-starter-monitor/ - - sdk/spring/spring-cloud-azure-starter-monitor-test/ -pr: - branches: - include: - - main - - feature/* - - hotfix/* - - release/* - paths: - include: - - sdk/spring/ci.monitor.yml - - sdk/spring/spring-cloud-azure-starter-monitor/ - - sdk/spring/spring-cloud-azure-starter-monitor-test/ - -extends: - template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml - parameters: - ServiceDirectory: spring - Artifacts: - - name: spring-cloud-azure-starter-monitor - groupId: com.azure.spring - safeName: springcloudazurestartermonitor - skipPublishDocGithubIo: true - skipPublishDocMs: true - skipUpdatePackageJson: true - skipVerifyChangelog: true - releaseInBatch: true - AdditionalModules: - - name: spring-cloud-azure-starter-monitor-test - groupId: com.azure.spring diff --git a/sdk/spring/ci.yml b/sdk/spring/ci.yml index a2b8331647c6..37c9c05efcce 100644 --- a/sdk/spring/ci.yml +++ b/sdk/spring/ci.yml @@ -10,10 +10,6 @@ trigger: paths: include: - sdk/spring/ - exclude: - - sdk/spring/spring-cloud-azure-starter-monitor/pom.xml - - sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml - pr: branches: include: @@ -24,9 +20,6 @@ pr: paths: include: - sdk/spring/ - exclude: - - sdk/spring/spring-cloud-azure-starter-monitor/pom.xml - - sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml # Note - the name parameter cannot contain dashes (-) which is why both # a name and displayName are required. Each parameter corresponds to a @@ -50,10 +43,6 @@ parameters: displayName: 'spring-cloud-azure-resourcemanager' type: boolean default: true -- name: release_springcloudazuretracesleuth - displayName: 'spring-cloud-azure-trace-sleuth' - type: boolean - default: true - name: release_springmessagingazure displayName: 'spring-messaging-azure' type: boolean @@ -126,6 +115,10 @@ parameters: displayName: 'spring-cloud-azure-starter-data-cosmos' type: boolean default: true +- name: release_springcloudazurestarterdataredislettuce + displayName: 'spring-cloud-azure-starter-data-redis-lettuce' + type: boolean + default: true - name: release_springcloudazurestartereventhubs displayName: 'spring-cloud-azure-starter-eventhubs' type: boolean @@ -214,10 +207,6 @@ parameters: displayName: 'spring-cloud-azure-starter-jdbc-postgresql' type: boolean default: true -- name: release_springcloudazurestarterredis - displayName: 'spring-cloud-azure-starter-redis' - type: boolean - default: true - name: release_springcloudazureappconfigurationconfig displayName: 'spring-cloud-azure-appconfiguration-config' type: boolean @@ -239,10 +228,12 @@ parameters: type: boolean default: true + extends: template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml parameters: ServiceDirectory: spring + JavadocSafeJavaBuildVersion: '1.21' Artifacts: - name: azure-spring-data-cosmos groupId: com.azure @@ -266,12 +257,6 @@ extends: skipPublishDocMs: true skipVerifyChangelog: true releaseInBatch: ${{ parameters.release_springcloudazureresourcemanager }} - - name: spring-cloud-azure-trace-sleuth - groupId: com.azure.spring - safeName: springcloudazuretracesleuth - skipPublishDocMs: true - skipVerifyChangelog: true - releaseInBatch: ${{ parameters.release_springcloudazuretracesleuth }} - name: spring-messaging-azure groupId: com.azure.spring safeName: springmessagingazure @@ -394,6 +379,14 @@ extends: skipUpdatePackageJson: true skipVerifyChangelog: true releaseInBatch: ${{ parameters.release_springcloudazurestarterdatacosmos }} + - name: spring-cloud-azure-starter-data-redis-lettuce + groupId: com.azure.spring + safeName: springcloudazurestarterdataredislettuce + skipPublishDocGithubIo: true + skipPublishDocMs: true + skipUpdatePackageJson: true + skipVerifyChangelog: true + releaseInBatch: ${{ parameters.release_springcloudazurestarterdataredislettuce }} - name: spring-cloud-azure-starter-eventhubs groupId: com.azure.spring safeName: springcloudazurestartereventhubs @@ -562,37 +555,29 @@ extends: skipUpdatePackageJson: true skipVerifyChangelog: true releaseInBatch: ${{ parameters.release_springcloudazurestarterjdbcpostgresql }} - - name: spring-cloud-azure-starter-redis - groupId: com.azure.spring - safeName: springcloudazurestarterredis - skipPublishDocGithubIo: true - skipPublishDocMs: true - skipUpdatePackageJson: true - skipVerifyChangelog: true - releaseInBatch: ${{ parameters.release_springcloudazurestarterredis }} - name: spring-cloud-azure-appconfiguration-config groupId: com.azure.spring safeName: springcloudazureappconfigurationconfig - skipPublishDocGithubIo: true - skipPublishDocMs: true + skipPublishDocGithubIo: false + skipPublishDocMs: false releaseInBatch: ${{ parameters.release_springcloudazureappconfigurationconfig }} - name: spring-cloud-azure-appconfiguration-config-web groupId: com.azure.spring safeName: springcloudazureappconfigurationconfigweb - skipPublishDocGithubIo: true - skipPublishDocMs: true + skipPublishDocGithubIo: false + skipPublishDocMs: false releaseInBatch: ${{ parameters.release_springcloudazureappconfigurationconfigweb }} - name: spring-cloud-azure-feature-management groupId: com.azure.spring safeName: springcloudazurefeaturemanagement - skipPublishDocGithubIo: true - skipPublishDocMs: true + skipPublishDocGithubIo: false + skipPublishDocMs: false releaseInBatch: ${{ parameters.release_springcloudazurefeaturemanagement }} - name: spring-cloud-azure-feature-management-web groupId: com.azure.spring safeName: springcloudazurefeaturemanagementweb - skipPublishDocGithubIo: true - skipPublishDocMs: true + skipPublishDocGithubIo: false + skipPublishDocMs: false releaseInBatch: ${{ parameters.release_springcloudazurefeaturemanagementweb }} - name: spring-cloud-azure-starter-appconfiguration-config groupId: com.azure.spring @@ -600,3 +585,5 @@ extends: skipPublishDocGithubIo: true skipPublishDocMs: true releaseInBatch: ${{ parameters.release_springcloudazurestarterappconfigurationconfig }} + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* diff --git a/sdk/spring/compatibility-tests.yml b/sdk/spring/compatibility-tests.yml index c5cb89d556f2..623c9d07bd45 100644 --- a/sdk/spring/compatibility-tests.yml +++ b/sdk/spring/compatibility-tests.yml @@ -25,5 +25,7 @@ stages: python -m pip install termcolor displayName: 'python module install' - script: | - python ./sdk/spring/scripts/compatibility_update_supported_version_matrix_json.py + python ./sdk/spring/scripts/compatibility_update_supported_version_matrix_json.py -m 3 displayName: 'update test version' + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* \ No newline at end of file diff --git a/sdk/spring/monitor-tests.yml b/sdk/spring/monitor-tests.yml deleted file mode 100644 index ff8c50460a8d..000000000000 --- a/sdk/spring/monitor-tests.yml +++ /dev/null @@ -1,29 +0,0 @@ -trigger: none -pr: none - -variables: - - template: ../../eng/pipelines/templates/variables/globals.yml - -stages: - - stage: "spring_monitor_tests" - jobs: - - template: /eng/common/pipelines/templates/jobs/generate-job-matrix.yml - parameters: - SparseCheckout: true - JobTemplatePath: ../../../../../sdk/spring/pipeline/monitor-tests-job.yml - AdditionalParameters: - ServiceDirectory: spring - MatrixConfigs: - - Name: monitor_compatibility_tests - Path: sdk/spring/pipeline/monitor-supported-version-matrix.json - Selection: sparse - NonSparseParameters: - - TEST_SPRING_BOOT_VERSION - GenerateVMJobs: true - PreGenerationSteps: - - script: | - python -m pip install termcolor - displayName: 'python module install' - - script: | - python ./sdk/spring/scripts/monitor_update_monitor_matrix_json.py - displayName: 'update test version' diff --git a/sdk/spring/pipeline/compatibility-tests-job.yml b/sdk/spring/pipeline/compatibility-tests-job.yml index 5756f8f36fd6..d999cca1cf12 100644 --- a/sdk/spring/pipeline/compatibility-tests-job.yml +++ b/sdk/spring/pipeline/compatibility-tests-job.yml @@ -18,6 +18,7 @@ jobs: parameters: Paths: - 'sdk/spring' + - 'sdk/parents/azure-client-sdk-parent' - 'sdk/boms/spring-cloud-azure-dependencies' - 'sdk/parents/azure-client-sdk-parent' - 'sdk/jdbc' @@ -42,7 +43,7 @@ jobs: - task: Maven@3 displayName: 'Run tests' inputs: - options: '$(DefaultOptions) -ntp -T ${{parameters.BuildParallelization}} ${{parameters.SkipOptions}}' + options: '$(DefaultOptions) -ntp -T ${{parameters.BuildParallelization}} ${{parameters.SkipOptions}} -Dcompiler.failondeprecatedstatus=-' mavenPomFile: sdk/spring/pom.xml mavenOptions: '$(MemoryOptions)' javaHomeOption: 'JDKVersion' diff --git a/sdk/spring/pipeline/cosmos-integration-matrix.json b/sdk/spring/pipeline/cosmos-integration-matrix.json index 3a9c7cbb7c12..1e275cc2da55 100644 --- a/sdk/spring/pipeline/cosmos-integration-matrix.json +++ b/sdk/spring/pipeline/cosmos-integration-matrix.json @@ -9,6 +9,6 @@ } }, "TestFromSource": true, - "JavaTestVersion": ["1.8", "1.11", "1.17", "1.21"] + "JavaTestVersion": ["1.11", "1.17", "1.21"] } } diff --git a/sdk/spring/pipeline/monitor-supported-version-matrix.json b/sdk/spring/pipeline/monitor-supported-version-matrix.json deleted file mode 100644 index 0fc1c370d8fd..000000000000 --- a/sdk/spring/pipeline/monitor-supported-version-matrix.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "displayNames": { - - }, - "matrix": { - "Agent": { - "ubuntu-20.04": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" } - }, - "JavaTestVersion": "1.21", - "TEST_SPRING_BOOT_VERSION": [ - - ] - } -} diff --git a/sdk/spring/pipeline/monitor-tests-job.yml b/sdk/spring/pipeline/monitor-tests-job.yml deleted file mode 100644 index 9c38aab7eb56..000000000000 --- a/sdk/spring/pipeline/monitor-tests-job.yml +++ /dev/null @@ -1,38 +0,0 @@ -parameters: - Matrix: '' - MaxParallel: 10 - SkipOptions: "-Dcheckstyle.skip -Dcodesnippet.skip -Denforcer.skip -Djacoco.skip -Dmaven.javadoc.skip -Drevapi.skip -Dspotbugs.skip" - BuildParallelization: '2C' - -jobs: - - job: 'monitor_test' - dependsOn: ${{ parameters.DependsOn }} - condition: and(succeededOrFailed(), ne(${{ parameters.Matrix }}, '{}')) - strategy: - maxParallel: ${{ parameters.MaxParallel }} - matrix: $[ ${{ parameters.Matrix }} ] - variables: - - template: ../../../eng/pipelines/templates/variables/globals.yml - steps: - - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml - parameters: - Paths: - - 'sdk/parents/azure-client-sdk-parent' - - 'sdk/spring' - - script: | - python -m pip install termcolor - displayName: 'Python module install' - - script: | - python ./sdk/spring/scripts/spring_monitor_version_substitution.py -b $(TEST_SPRING_BOOT_VERSION) - displayName: 'Replace Spring version' - - task: Maven@3 - displayName: 'Run tests' - inputs: - options: '$(DefaultOptions) -ntp -T ${{parameters.BuildParallelization}} ${{parameters.SkipOptions}}' - mavenPomFile: sdk/spring/pom.xml - mavenOptions: '$(MemoryOptions)' - javaHomeOption: 'JDKVersion' - jdkVersionOption: $(JavaTestVersion) - jdkArchitectureOption: 'x64' - goals: 'clean verify -Pmonitor' - diff --git a/sdk/spring/pom.xml b/sdk/spring/pom.xml index 57327de66581..6f96ffcef608 100644 --- a/sdk/spring/pom.xml +++ b/sdk/spring/pom.xml @@ -1,6 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.azure.spring spring-cloud-azure @@ -35,6 +35,7 @@ spring-cloud-azure-starter-appconfiguration spring-cloud-azure-starter-cosmos spring-cloud-azure-starter-data-cosmos + spring-cloud-azure-starter-data-redis-lettuce spring-cloud-azure-starter-eventhubs spring-cloud-azure-starter-eventgrid spring-cloud-azure-starter-keyvault @@ -56,10 +57,8 @@ spring-cloud-azure-stream-binder-eventhubs spring-cloud-azure-stream-binder-servicebus-core spring-cloud-azure-stream-binder-servicebus - spring-cloud-azure-trace-sleuth spring-cloud-azure-starter-jdbc-mysql spring-cloud-azure-starter-jdbc-postgresql - spring-cloud-azure-starter-redis spring-cloud-azure-integration-tests spring-cloud-azure-integration-test-appconfiguration-config spring-cloud-azure-appconfiguration-config @@ -68,8 +67,6 @@ spring-cloud-azure-feature-management-web spring-cloud-azure-starter-appconfiguration-config azure-spring-data-cosmos - spring-cloud-azure-starter-monitor - spring-cloud-azure-starter-monitor-test @@ -98,6 +95,7 @@ spring-cloud-azure-starter-appconfiguration spring-cloud-azure-starter-cosmos spring-cloud-azure-starter-data-cosmos + spring-cloud-azure-starter-data-redis-lettuce spring-cloud-azure-starter-eventhubs spring-cloud-azure-starter-eventgrid spring-cloud-azure-starter-keyvault @@ -119,10 +117,8 @@ spring-cloud-azure-stream-binder-servicebus spring-cloud-azure-starter-stream-eventhubs spring-cloud-azure-starter-stream-servicebus - spring-cloud-azure-trace-sleuth spring-cloud-azure-starter-jdbc-mysql spring-cloud-azure-starter-jdbc-postgresql - spring-cloud-azure-starter-redis spring-cloud-azure-integration-test-appconfiguration-config spring-cloud-azure-appconfiguration-config spring-cloud-azure-appconfiguration-config-web @@ -132,45 +128,5 @@ azure-spring-data-cosmos - - - coverage - - spring-messaging-azure - spring-messaging-azure-eventhubs - spring-messaging-azure-servicebus - spring-messaging-azure-storage-queue - spring-integration-azure-core - spring-integration-azure-eventhubs - spring-integration-azure-servicebus - spring-integration-azure-storage-queue - spring-cloud-azure-core - spring-cloud-azure-service - spring-cloud-azure-resourcemanager - spring-cloud-azure-actuator - spring-cloud-azure-actuator-autoconfigure - spring-cloud-azure-autoconfigure - spring-cloud-azure-stream-binder-eventhubs-core - spring-cloud-azure-stream-binder-eventhubs - spring-cloud-azure-stream-binder-servicebus-core - spring-cloud-azure-stream-binder-servicebus - spring-cloud-azure-trace-sleuth - spring-cloud-azure-integration-test-appconfiguration-config - spring-cloud-azure-appconfiguration-config - spring-cloud-azure-appconfiguration-config-web - spring-cloud-azure-feature-management - spring-cloud-azure-feature-management-web - azure-spring-data-cosmos - - - - - monitor - - ../../eng/code-quality-reports - spring-cloud-azure-starter-monitor - spring-cloud-azure-starter-monitor-test - - diff --git a/sdk/spring/scripts/compatibility_delete_version.py b/sdk/spring/scripts/compatibility_delete_version.py index 7d4b38589d10..93f8b58aadbb 100644 --- a/sdk/spring/scripts/compatibility_delete_version.py +++ b/sdk/spring/scripts/compatibility_delete_version.py @@ -2,8 +2,8 @@ # # This script is used to delete dependency version in ./sdk/spring/**/pom*.xml for compatibility check. # Sample: -# 1. python .\sdk\spring\scripts\compatibility_delete_version.py --spring_boot_dependencies_version 2.7.0 -# 2. python .\sdk\spring\scripts\compatibility_delete_version.py -b 2.7.0 +# 1. python .\sdk\spring\scripts\compatibility_delete_version.py --spring_boot_dependencies_version 3.2.0 +# 2. python .\sdk\spring\scripts\compatibility_delete_version.py -b 3.2.0 # # The script must be run at the root of azure-sdk-for-java.import time @@ -17,8 +17,8 @@ IGNORED_ARTIFACTS = {'com.github.tomakehurst:wiremock-jre8'} IGNORED_SPRINGBOOT_ARTIFACTS = { - "2.5.15": {"org.postgresql:postgresql", - "com.mysql:mysql-connector-j"} + "3.0.13": {"net.bytebuddy:byte-buddy", + "net.bytebuddy:byte-buddy-agent"} } def get_args(): diff --git a/sdk/spring/scripts/compatibility_get_spring_cloud_version.py b/sdk/spring/scripts/compatibility_get_spring_cloud_version.py index e3c0551a57ed..ae9851f77ad6 100644 --- a/sdk/spring/scripts/compatibility_get_spring_cloud_version.py +++ b/sdk/spring/scripts/compatibility_get_spring_cloud_version.py @@ -23,13 +23,18 @@ def change_to_repo_root_dir(): def get_spring_cloud_version(filepath): spring_boot_version = get_args().spring_boot_dependencies_version - spring_cloud_version = "" + spring_cloud_version = None data = requests.get(filepath).json() + + # Only find the Spring Cloud Version that matches the special Spring Boot version first for entry in data: for key in entry: if spring_boot_version == entry[key]: spring_cloud_version = entry["spring-cloud-version"] break + + if spring_cloud_version is not None: + break print(spring_cloud_version) diff --git a/sdk/spring/scripts/compatibility_insert_dependencymanagement.py b/sdk/spring/scripts/compatibility_insert_dependencymanagement.py index ae9cde8b03d4..dbba3ab102f5 100644 --- a/sdk/spring/scripts/compatibility_insert_dependencymanagement.py +++ b/sdk/spring/scripts/compatibility_insert_dependencymanagement.py @@ -139,16 +139,16 @@ def add_repo_path(file_path, repo_type): def update_spring_boot_starter_parent_for_file(file_path, spring_boot_dependencies_version): - with open(file_path, 'r', encoding = 'utf-8') as pom_file: - pom_file_content = pom_file.read() - if pom_file_content.find('spring-boot-starter-parent') == -1: - log.debug("No spring-boot-starter-parent found in " + file_path + ". Not updating it.") - return - with open(file_path, 'r+', encoding = 'utf-8') as updated_pom_file: - log.info("Found spring-boot-starter-parent found in " + file_path + ". Now updating it.") - new_content = pom_file_content.replace('spring-boot-starter-parent', - 'spring-boot-starter-parent\n{}'.format(spring_boot_dependencies_version)) - updated_pom_file.writelines(new_content) + with open(file_path, 'r', encoding = 'utf-8') as pom_file: + pom_file_content = pom_file.read() + if pom_file_content.find('spring-boot-starter-parent') == -1: + log.debug("No spring-boot-starter-parent found in " + file_path + ". Not updating it.") + return + with open(file_path, 'r+', encoding = 'utf-8') as updated_pom_file: + log.info("Found spring-boot-starter-parent found in " + file_path + ". Now updating it.") + new_content = pom_file_content.replace('spring-boot-starter-parent', + 'spring-boot-starter-parent\n{}'.format(spring_boot_dependencies_version)) + updated_pom_file.writelines(new_content) def get_dependency_management_content(): @@ -171,7 +171,6 @@ def get_dependency_management_content(): - """ @@ -180,7 +179,7 @@ def get_properties_contend_with_tag(spring_boot_dependencies_version, spring_clo {} - + """.format(get_properties_contend(spring_boot_dependencies_version, spring_cloud_dependencies_version)) diff --git a/sdk/spring/scripts/get_spring_boot_managed_external_dependencies.py b/sdk/spring/scripts/get_spring_boot_managed_external_dependencies.py index 9c75a8004383..c1c7aabe6c8d 100644 --- a/sdk/spring/scripts/get_spring_boot_managed_external_dependencies.py +++ b/sdk/spring/scripts/get_spring_boot_managed_external_dependencies.py @@ -6,8 +6,8 @@ # Get `SPRING_CLOUD_VERSION` from https://github.com/spring-cloud/spring-cloud-release/tags. # Note that spring-cloud version should compatible with spring-boot version. # Refs: https://spring.io/projects/spring-cloud. -# 2. Run command: `python .\sdk\spring\scripts\get_spring_boot_managed_external_dependencies.py -b 2.7.0 -c 2021.0.3`. -# Or `python .\sdk\spring\scripts\get_spring_boot_managed_external_dependencies.py --spring_boot_dependencies_version 2.7.0 --spring_cloud_dependencies_version 2021.0.3`. +# 2. Run command: `python .\sdk\spring\scripts\get_spring_boot_managed_external_dependencies.py -b 3.0.0-M5 -c 2022.0.0-M5`. +# Or `python .\sdk\spring\scripts\get_spring_boot_managed_external_dependencies.py --spring_boot_dependencies_version 3.0.0-M5 --spring_cloud_dependencies_version 2022.0.0-M5`. # 3. Then a file named `spring_boot_${SPRING_BOOT_VERSION}_managed_external_dependencies.txt` will be created. # # Please refer to ./README.md to get more information about this script. diff --git a/sdk/spring/scripts/get_suitable_versions_for_sb3.py b/sdk/spring/scripts/get_suitable_versions_for_sb3.py new file mode 100644 index 000000000000..d329b6316dd7 --- /dev/null +++ b/sdk/spring/scripts/get_suitable_versions_for_sb3.py @@ -0,0 +1,166 @@ +############################################################################################################################################ +# This script is used to create a version file for `sdk/spring/scripts/resolve_version_conflict_for_sb3.py` to resolve conflict versions when sync 3rd party dependencies of branch feature/spring-boot-3. +# +# Some external dependencies could exist in branch feature/spring-boot-3's but not in local `eng/versioning/external_dependencies.txt`, this +# script will add these dependencies in. And will try to use the version defined in +# `.\sdk\spring\spring_boot_SPRING_BOOT_VERSION_managed_external_dependencies.txt` +# +# +# How to use this script. +# 1. Get `SPRING_BOOT_VERSION` from file(`.\sdk\spring\spring_boot_${SPRING_BOOT_VERSION}_managed_external_dependencies.txt`). +# 2. Run command: `python .\sdk\spring\scripts\get_suitable_versions_for_sb3.py -b 3.0.5`. +# Or `python .\sdk\spring\scripts\get_suitable_versions_for_sb3.py --spring_boot_dependencies_version 3.0.5`. +# 3. Then `sdk\spring\conflict_versions.txt` will be created and may have some logs. +# 4. If there are logs, Judge whether to change or delete dependencies. +# +############################################################################################################################################ + +import time +import os +import argparse +import requests +from log import log +from version_util import version_greater_than +from replace_util import change_to_repo_root_dir + +EXTERNAL_DEPENDENCIES_FILE = 'eng/versioning/external_dependencies.txt' +SB3_EXTERNAL_DEPENDENCIES_FILE_URL = 'https://raw.githubusercontent.com/Azure/azure-sdk-for-java/feature/spring-boot-3/eng/versioning/external_dependencies.txt' +OUTPUT_FILE = 'sdk/spring/scripts/conflict_versions.txt' +SKIP_IDS = [ + 'org.eclipse.jgit:org.eclipse.jgit' # Refs: https://github.com/Azure/azure-sdk-for-java/pull/13956/files#r468368271 +] + + +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument('-b', '--spring_boot_dependencies_version', type = str, required = True) + parser.add_argument( + '--log', + type = str, + choices = ['debug', 'info', 'warn', 'error', 'none'], + required = False, + default = 'info', + help = 'Set log level.' + ) + args = parser.parse_args() + log.set_log_level(args.log) + return args + + +def dump_versions_from_sb3_branch(): + response = requests.get(SB3_EXTERNAL_DEPENDENCIES_FILE_URL) + response.raise_for_status() # ensure we notice bad responses + return dump_version(response.iter_lines(decode_unicode = True)) + + +def dump_versions_from_sb3_managed_external_deps(sb_ver): + managed_ver_file = 'sdk/spring/scripts/spring_boot_{}_managed_external_dependencies.txt'.format(sb_ver) + with open(managed_ver_file, "r") as f: + return dump_version(iter(f.readlines())) + + +def dump_versions_from_local_external_deps(): + with open(EXTERNAL_DEPENDENCIES_FILE, "r") as f: + return dump_version(iter(f.readlines())) + + +def dump_version(lines_iter): + dependency_dict = {} + for line in lines_iter: + line = line.strip() + if line and not line.startswith('#'): + some = line.split(';', 1) + if len(some) < 2: + print(line) + key, val = line.split(';', 1) + dependency_dict[key] = val + return dependency_dict + + +def three_way_merge(ver_local, ver_remote, ver_sb3_managed): + conflicting_set = [] + local_missing_set = [] + remote_missing_set = [] + resolve_dict = {} + remove_list = [] + total_keys = ver_remote.keys() | ver_local.keys() + for k in total_keys: + if k not in ver_local: + local_missing_set.append(k) + elif k not in ver_remote: + remote_missing_set.append(k) + elif ver_remote[k] != ver_local[k]: + conflicting_set.append(k) + if conflicting_set: + conflicting_set.sort() + len_ver, len_id = cal_len_for_logging_format(conflicting_set, ver_local, ver_remote) + for k in conflicting_set: + v_local = ver_local[k] + v_remote = ver_remote[k] + v_sb3 = ver_sb3_managed.get(k, 'N/A') + if v_sb3 != 'N/A' and v_remote == v_sb3 and version_greater_than(v_remote, v_local): + resolve_dict[k] = v_remote + else: + log.warn("Conflicting version found for [{:<{}}], local is [{:<{}}], but remote is [{:<{}}], the sb3 managed version is [{:<{}}], it will be set as remote version," + " change it in conflict_versions.txt if needed.".format(k, len_id, v_local, len_ver, v_remote, len_ver, v_sb3, len_ver)) + log.warn("") + resolve_dict[k] = v_remote + if local_missing_set: + local_missing_set.sort() + len_ver, len_id = cal_len_for_logging_format(local_missing_set, ver_sb3_managed, ver_remote) + for k in local_missing_set: + v_remote = ver_remote[k] + v_sb3 = ver_sb3_managed.get(k, 'N/A') + if v_sb3 != 'N/A' and v_remote == v_sb3: + resolve_dict[k] = v_remote + else: + log.warn("Entry existing in remote but not local found for [{:<{}}], remote version is [{:<{}}], the sb3 managed version is [{:<{}}], it will be set as remote version," + " change it in conflict_versions.txt if needed.".format(k, len_id, v_remote, len_ver, v_sb3, len_ver)) + log.warn("") + resolve_dict[k] = v_remote + if remote_missing_set: + remote_missing_set.sort() + len_ver, len_id = cal_len_for_logging_format(remote_missing_set, ver_local, ver_remote) + for k in remote_missing_set: + log.warn("Entry existing in local but not remote found for [{:<{}}], it will be removed, if want to keep, delete the line in conflict_versions.txt".format(k, len_id)) + remove_list.append(k) + log.warn("") + return resolve_dict, remove_list + + +def output_versions_file(resolve_dict, remove_list): + if resolve_dict or remove_list: + output_file = open(OUTPUT_FILE, 'w') + for key, value in sorted(resolve_dict.items()): + output_file.write('{};{}\n'.format(key, value)) + for k in sorted(remove_list): + output_file.write("#remove;{}\n".format(k)) + output_file.close() + else: + log.warn("Nothing conflict!") + return + + +def cal_len_for_logging_format(k_set, ver_local, ver_remote): + max_len_id = 0 + max_len_ver = 0 + for k in k_set: + max_len_id = max(len(k), max_len_id) + max_len_ver = max(len(ver_local.get(k, "")), len(ver_remote.get(k, "")), max_len_ver) + return max_len_ver, max_len_id + + +def main(): + start_time = time.time() + change_to_repo_root_dir() + args = get_args() + log.debug('Current working directory = {}.'.format(os.getcwd())) + resolve_dict, remove_list = three_way_merge(dump_versions_from_local_external_deps(), dump_versions_from_sb3_branch(), + dump_versions_from_sb3_managed_external_deps(args.spring_boot_dependencies_version)) + output_versions_file(resolve_dict, remove_list) + elapsed_time = time.time() - start_time + log.info('elapsed_time = {}'.format(elapsed_time)) + + +if __name__ == '__main__': + main() diff --git a/sdk/spring/scripts/monitor_update_monitor_matrix_json.py b/sdk/spring/scripts/monitor_update_monitor_matrix_json.py deleted file mode 100644 index bab5d4a7e6c4..000000000000 --- a/sdk/spring/scripts/monitor_update_monitor_matrix_json.py +++ /dev/null @@ -1,59 +0,0 @@ -# Python version 3.4 or higher is required to run this script. -# -# This script is used to update sdk\spring\pipeline\supported-version-matrix.json before compatibility check. -# Sample: -# 1. python .\sdk\spring\scripts\monitor_update_monitor_matrix_json.py -# -# The script must be run at the root of azure-sdk-for-java. - - -import time -from log import log -import os -import json -import requests - - -def change_to_repo_root_dir(): - os.chdir(os.path.dirname(os.path.realpath(__file__))) - os.chdir('../../..') - - -def update_monitor_matrix_json_file(filepath, test_spring_boot_version): - names = {} - for version in test_spring_boot_version: - names[version] = "springboot" + version.replace(".", "_") - with open(filepath, 'r') as file: - data = json.load(file) - data['displayNames'] = names - data['matrix']['TEST_SPRING_BOOT_VERSION'] = test_spring_boot_version - with open(filepath, 'w') as file: - json.dump(data, file, indent = 2) - - -def get_supported_spring_boot_version(filepath): - version3 = [] - version2 = [] - data = requests.get(filepath).json() - for entry in data: - for key in entry: - if entry[key] == "SUPPORTED" and entry["spring-boot-version"].startswith("3."): - version3.append(entry["spring-boot-version"]) - if entry[key] == "SUPPORTED" and entry["spring-boot-version"].startswith("2."): - version2.append(entry["spring-boot-version"]) - supported_version_list = [max(version3), max(version2)] - return supported_version_list - - -def main(): - start_time = time.time() - change_to_repo_root_dir() - log.debug('Current working directory = {}.'.format(os.getcwd())) - test_spring_boot_version = get_supported_spring_boot_version("https://raw.githubusercontent.com/Azure/azure-sdk-for-java/main/sdk/spring/pipeline/spring-cloud-azure-supported-spring.json") - update_monitor_matrix_json_file("./sdk/spring/pipeline/monitor-supported-version-matrix.json", test_spring_boot_version) - elapsed_time = time.time() - start_time - log.info('elapsed_time = {}'.format(elapsed_time)) - - -if __name__ == '__main__': - main() diff --git a/sdk/spring/scripts/resolve_version_conflict_for_sb3.py b/sdk/spring/scripts/resolve_version_conflict_for_sb3.py new file mode 100644 index 000000000000..152cf15d77fa --- /dev/null +++ b/sdk/spring/scripts/resolve_version_conflict_for_sb3.py @@ -0,0 +1,74 @@ +############################################################################################################################################ +# This script is used to resolve conflict versions when sync 3rd party dependencies from `.\sdk\spring\spring_boot_SPRING_BOOT_VERSION_managed_external_dependencies.txt` +# to `eng/versioning/external_dependencies.txt`. +# +# How to use this script. +# 1. Make sure file(`.\sdk\spring\conflict_versions.txt`) exist. If it doesn't exist, please refer to `.\sdk\spring\scripts\get_suitable_versions_for_sb3.py` for creating. +# 2. Run command: `python .\sdk\spring\scripts\resolve_version_conflict_for_sb3.py`. +# 3. Then `eng/versioning/external_dependencies.txt` will be updated. +# +############################################################################################################################################ + +import in_place +import time +import os +from log import log +from replace_util import change_to_repo_root_dir + +EXTERNAL_DEPENDENCIES_FILE = 'eng/versioning/external_dependencies.txt' +CONFLICT_VERSIONS_FILE = 'sdk/spring/scripts/conflict_versions.txt' +SKIP_IDS = [ + 'org.eclipse.jgit:org.eclipse.jgit' # Refs: https://github.com/Azure/azure-sdk-for-java/pull/13956/files#r468368271 +] + + +def main(): + start_time = time.time() + change_to_repo_root_dir() + log.debug('Current working directory = {}.'.format(os.getcwd())) + sync_external_dependencies(CONFLICT_VERSIONS_FILE, EXTERNAL_DEPENDENCIES_FILE) + elapsed_time = time.time() - start_time + log.info('elapsed_time = {}'.format(elapsed_time)) + + +def sync_external_dependencies(source_file, target_file): + # Read artifact version from source_file. + dependency_dict = {} + remove_list = [] + if os.path.exists(source_file): + with open(source_file) as file: + for line in file: + if line.startswith('#remove'): + remove_list = line.strip().split(';', 1) + else: + line = line.strip() + key, val = line.split(';', 1) + dependency_dict[key] = val + # Write artifact versions into target file. + with in_place.InPlace(target_file) as file: + for line in file: + line = line.strip() + if line.startswith('#') or not line: + file.write(line) + file.write('\n') + else: + key, val = line.split(';', 1) + if key not in SKIP_IDS and key in dependency_dict: + file.write('{};{}\n'.format(key, dependency_dict[key])) + log.info("update artifact:{} to {}".format(key, dependency_dict[key])) + del dependency_dict[key] + elif key not in SKIP_IDS and key in remove_list: + log.warn("remove artifact:{}".format(key)) + else: + file.write(line) + file.write('\n') + if dependency_dict: + file.write("\n# Spring Boot 3 dependency versions\n") + for key in dependency_dict: + file.write('{};{}\n'.format(key, dependency_dict[key])) + else: + log.warn('No conflict versions!') + + +if __name__ == '__main__': + main() diff --git a/sdk/spring/scripts/spring_boot_2.7.18_managed_external_dependencies.txt b/sdk/spring/scripts/spring_boot_2.7.18_managed_external_dependencies.txt deleted file mode 100644 index af9baa762c81..000000000000 --- a/sdk/spring/scripts/spring_boot_2.7.18_managed_external_dependencies.txt +++ /dev/null @@ -1,1588 +0,0 @@ -antlr:antlr;2.7.7 -ch.qos.logback:logback-access;1.2.12 -ch.qos.logback:logback-classic;1.2.12 -ch.qos.logback:logback-core;1.2.12 -com.atomikos:transactions-jdbc;4.0.6 -com.atomikos:transactions-jms;4.0.6 -com.atomikos:transactions-jta;4.0.6 -com.couchbase.client:java-client;3.3.4 -com.datastax.oss:java-driver-bom;4.14.1 -com.datastax.oss:java-driver-core;4.14.1 -com.datastax.oss:java-driver-core-shaded;4.14.1 -com.datastax.oss:java-driver-mapper-processor;4.14.1 -com.datastax.oss:java-driver-mapper-runtime;4.14.1 -com.datastax.oss:java-driver-metrics-micrometer;4.14.1 -com.datastax.oss:java-driver-metrics-microprofile;4.14.1 -com.datastax.oss:java-driver-query-builder;4.14.1 -com.datastax.oss:java-driver-shaded-guava;25.1-jre-graal-sub-1 -com.datastax.oss:java-driver-test-infra;4.14.1 -com.datastax.oss:native-protocol;1.5.1 -com.ecwid.consul:consul-api;1.4.5 -com.fasterxml.jackson.core:jackson-annotations;2.13.5 -com.fasterxml.jackson.core:jackson-core;2.13.5 -com.fasterxml.jackson.core:jackson-databind;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-avro;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-cbor;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-csv;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-ion;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-properties;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-protobuf;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-smile;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-toml;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.13.5 -com.fasterxml.jackson.dataformat:jackson-dataformat-yaml;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-eclipse-collections;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-guava;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate4;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate5;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-hppc;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jaxrs;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-joda;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-joda-money;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-json-org;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-jsr353;2.13.5 -com.fasterxml.jackson.datatype:jackson-datatype-pcollections;2.13.5 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-base;2.13.5 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-cbor-provider;2.13.5 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider;2.13.5 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-smile-provider;2.13.5 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-xml-provider;2.13.5 -com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-yaml-provider;2.13.5 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-base;2.13.5 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-cbor-provider;2.13.5 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider;2.13.5 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-smile-provider;2.13.5 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-xml-provider;2.13.5 -com.fasterxml.jackson.jaxrs:jackson-jaxrs-yaml-provider;2.13.5 -com.fasterxml.jackson.jr:jackson-jr-all;2.13.5 -com.fasterxml.jackson.jr:jackson-jr-annotation-support;2.13.5 -com.fasterxml.jackson.jr:jackson-jr-objects;2.13.5 -com.fasterxml.jackson.jr:jackson-jr-retrofit2;2.13.5 -com.fasterxml.jackson.jr:jackson-jr-stree;2.13.5 -com.fasterxml.jackson.module:jackson-module-afterburner;2.13.5 -com.fasterxml.jackson.module:jackson-module-blackbird;2.13.5 -com.fasterxml.jackson.module:jackson-module-guice;2.13.5 -com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations;2.13.5 -com.fasterxml.jackson.module:jackson-module-jaxb-annotations;2.13.5 -com.fasterxml.jackson.module:jackson-module-jsonSchema;2.13.5 -com.fasterxml.jackson.module:jackson-module-kotlin;2.13.5 -com.fasterxml.jackson.module:jackson-module-mrbean;2.13.5 -com.fasterxml.jackson.module:jackson-module-no-ctor-deser;2.13.5 -com.fasterxml.jackson.module:jackson-module-osgi;2.13.5 -com.fasterxml.jackson.module:jackson-module-parameter-names;2.13.5 -com.fasterxml.jackson.module:jackson-module-paranamer;2.13.5 -com.fasterxml.jackson.module:jackson-module-scala_2.11;2.13.5 -com.fasterxml.jackson.module:jackson-module-scala_2.12;2.13.5 -com.fasterxml.jackson.module:jackson-module-scala_2.13;2.13.5 -com.fasterxml.jackson.module:jackson-module-scala_3;2.13.5 -com.fasterxml.jackson:jackson-bom;2.13.5 -com.fasterxml:classmate;1.5.1 -com.github.ben-manes.caffeine:caffeine;2.9.3 -com.github.ben-manes.caffeine:guava;2.9.3 -com.github.ben-manes.caffeine:jcache;2.9.3 -com.github.ben-manes.caffeine:simulator;2.9.3 -com.github.mxab.thymeleaf.extras:thymeleaf-extras-data-attribute;2.0.1 -com.github.tomakehurst:wiremock-jre8;2.26.3 -com.github.tomakehurst:wiremock-jre8-standalone;2.33.2 -com.google.appengine:appengine-api-1.0-sdk;1.9.98 -com.google.code.gson:gson;2.9.1 -com.graphql-java:graphql-java;18.5 -com.h2database:h2;2.1.214 -com.hazelcast:hazelcast;5.1.7 -com.hazelcast:hazelcast-hibernate52;2.2.1 -com.hazelcast:hazelcast-hibernate53;2.2.1 -com.hazelcast:hazelcast-spring;5.1.7 -com.ibm.db2:jcc;11.5.9.0 -com.jayway.jsonpath:json-path;2.7.0 -com.jayway.jsonpath:json-path-assert;2.7.0 -com.microsoft.sqlserver:mssql-jdbc;10.2.3.jre8 -com.mysql:mysql-connector-j;8.0.33 -com.netflix.eureka:eureka-client;1.10.18 -com.netflix.eureka:eureka-core;1.10.18 -com.oracle.database.ha:ons;21.5.0.0 -com.oracle.database.ha:simplefan;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc11-debug;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc11-observability-debug;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc11_g;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc11dms_g;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc8-debug;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc8-observability-debug;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc8_g;21.5.0.0 -com.oracle.database.jdbc.debug:ojdbc8dms_g;21.5.0.0 -com.oracle.database.jdbc:ojdbc-bom;21.5.0.0 -com.oracle.database.jdbc:ojdbc11;21.5.0.0 -com.oracle.database.jdbc:ojdbc11-production;21.5.0.0 -com.oracle.database.jdbc:ojdbc8;21.5.0.0 -com.oracle.database.jdbc:ojdbc8-production;21.5.0.0 -com.oracle.database.jdbc:rsi;21.5.0.0 -com.oracle.database.jdbc:ucp;21.5.0.0 -com.oracle.database.jdbc:ucp11;21.5.0.0 -com.oracle.database.nls:orai18n;21.5.0.0 -com.oracle.database.observability:dms;21.5.0.0 -com.oracle.database.observability:ojdbc11-observability;21.5.0.0 -com.oracle.database.observability:ojdbc11dms;21.5.0.0 -com.oracle.database.observability:ojdbc8-observability;21.5.0.0 -com.oracle.database.observability:ojdbc8dms;21.5.0.0 -com.oracle.database.r2dbc:oracle-r2dbc;0.4.0 -com.oracle.database.security:oraclepki;21.5.0.0 -com.oracle.database.security:osdt_cert;21.5.0.0 -com.oracle.database.security:osdt_core;21.5.0.0 -com.oracle.database.xml:xdb;21.5.0.0 -com.oracle.database.xml:xmlparserv2;21.5.0.0 -com.querydsl:querydsl-apt;5.0.0 -com.querydsl:querydsl-bom;5.0.0 -com.querydsl:querydsl-codegen;5.0.0 -com.querydsl:querydsl-codegen-utils;5.0.0 -com.querydsl:querydsl-collections;5.0.0 -com.querydsl:querydsl-core;5.0.0 -com.querydsl:querydsl-guava;5.0.0 -com.querydsl:querydsl-hibernate-search;5.0.0 -com.querydsl:querydsl-jdo;5.0.0 -com.querydsl:querydsl-jpa;5.0.0 -com.querydsl:querydsl-jpa-codegen;5.0.0 -com.querydsl:querydsl-kotlin;5.0.0 -com.querydsl:querydsl-kotlin-codegen;5.0.0 -com.querydsl:querydsl-lucene3;5.0.0 -com.querydsl:querydsl-lucene4;5.0.0 -com.querydsl:querydsl-lucene5;5.0.0 -com.querydsl:querydsl-mongodb;5.0.0 -com.querydsl:querydsl-scala;5.0.0 -com.querydsl:querydsl-spatial;5.0.0 -com.querydsl:querydsl-sql;5.0.0 -com.querydsl:querydsl-sql-codegen;5.0.0 -com.querydsl:querydsl-sql-spatial;5.0.0 -com.querydsl:querydsl-sql-spring;5.0.0 -com.rabbitmq:amqp-client;5.14.3 -com.rabbitmq:stream-client;0.5.0 -com.samskivert:jmustache;1.15 -com.sendgrid:sendgrid-java;4.9.3 -com.squareup.okhttp3:logging-interceptor;4.9.3 -com.squareup.okhttp3:mockwebserver;4.9.3 -com.squareup.okhttp3:okcurl;4.9.3 -com.squareup.okhttp3:okhttp;4.9.3 -com.squareup.okhttp3:okhttp-bom;4.9.3 -com.squareup.okhttp3:okhttp-brotli;4.9.3 -com.squareup.okhttp3:okhttp-dnsoverhttps;4.9.3 -com.squareup.okhttp3:okhttp-sse;4.9.3 -com.squareup.okhttp3:okhttp-tls;4.9.3 -com.squareup.okhttp3:okhttp-urlconnection;4.9.3 -com.sun.activation:jakarta.activation;1.2.2 -com.sun.mail:jakarta.mail;1.6.7 -com.sun.xml.messaging.saaj:saaj-impl;1.5.3 -com.toomuchcoding.jsonassert:jsonassert;0.6.2 -com.toomuchcoding.jsonassert:jsonassert-shade;0.6.2 -com.unboundid:unboundid-ldapsdk;6.0.10 -com.zaxxer:HikariCP;4.0.3 -commons-codec:commons-codec;1.15 -commons-fileupload:commons-fileupload;1.5 -commons-pool:commons-pool;1.6 -de.flapdoodle.embed:de.flapdoodle.embed.mongo;3.4.11 -io.awspring.cloud:spring-cloud-aws-context;2.4.4 -io.dropwizard.metrics:metrics-annotation;4.2.22 -io.dropwizard.metrics:metrics-bom;4.2.22 -io.dropwizard.metrics:metrics-caffeine;4.2.22 -io.dropwizard.metrics:metrics-caffeine3;4.2.22 -io.dropwizard.metrics:metrics-collectd;4.2.22 -io.dropwizard.metrics:metrics-core;4.2.22 -io.dropwizard.metrics:metrics-ehcache;4.2.22 -io.dropwizard.metrics:metrics-graphite;4.2.22 -io.dropwizard.metrics:metrics-healthchecks;4.2.22 -io.dropwizard.metrics:metrics-httpasyncclient;4.2.22 -io.dropwizard.metrics:metrics-httpclient;4.2.22 -io.dropwizard.metrics:metrics-httpclient5;4.2.22 -io.dropwizard.metrics:metrics-jakarta-servlet;4.2.22 -io.dropwizard.metrics:metrics-jakarta-servlet6;4.2.22 -io.dropwizard.metrics:metrics-jakarta-servlets;4.2.22 -io.dropwizard.metrics:metrics-jcache;4.2.22 -io.dropwizard.metrics:metrics-jdbi;4.2.22 -io.dropwizard.metrics:metrics-jdbi3;4.2.22 -io.dropwizard.metrics:metrics-jersey2;4.2.22 -io.dropwizard.metrics:metrics-jersey3;4.2.22 -io.dropwizard.metrics:metrics-jersey31;4.2.22 -io.dropwizard.metrics:metrics-jetty10;4.2.22 -io.dropwizard.metrics:metrics-jetty11;4.2.22 -io.dropwizard.metrics:metrics-jetty12;4.2.22 -io.dropwizard.metrics:metrics-jetty12-ee10;4.2.22 -io.dropwizard.metrics:metrics-jetty9;4.2.22 -io.dropwizard.metrics:metrics-jmx;4.2.22 -io.dropwizard.metrics:metrics-json;4.2.22 -io.dropwizard.metrics:metrics-jvm;4.2.22 -io.dropwizard.metrics:metrics-log4j2;4.2.22 -io.dropwizard.metrics:metrics-logback;4.2.22 -io.dropwizard.metrics:metrics-logback13;4.2.22 -io.dropwizard.metrics:metrics-logback14;4.2.22 -io.dropwizard.metrics:metrics-servlet;4.2.22 -io.dropwizard.metrics:metrics-servlets;4.2.22 -io.fabric8.kubernetes:kubernetes-karaf;5.10.2 -io.fabric8.kubernetes:kubernetes-karaf-itests;5.10.2 -io.fabric8:camel-k-client;5.10.2 -io.fabric8:camel-k-mock;5.10.2 -io.fabric8:camel-k-model-v1;5.10.2 -io.fabric8:camel-k-model-v1alpha1;5.10.2 -io.fabric8:camel-k-tests;5.10.2 -io.fabric8:certmanager-client;5.10.2 -io.fabric8:certmanager-examples;5.10.2 -io.fabric8:certmanager-model-v1;5.10.2 -io.fabric8:certmanager-model-v1alpha2;5.10.2 -io.fabric8:certmanager-model-v1alpha3;5.10.2 -io.fabric8:certmanager-model-v1beta1;5.10.2 -io.fabric8:certmanager-server-mock;5.10.2 -io.fabric8:certmanager-tests;5.10.2 -io.fabric8:chaosmesh-client;5.10.2 -io.fabric8:chaosmesh-examples;5.10.2 -io.fabric8:chaosmesh-model;5.10.2 -io.fabric8:chaosmesh-server-mock;5.10.2 -io.fabric8:chaosmesh-tests;5.10.2 -io.fabric8:crd-generator-api;5.10.2 -io.fabric8:crd-generator-apt;5.10.2 -io.fabric8:knative-client;5.10.2 -io.fabric8:knative-examples;5.10.2 -io.fabric8:knative-mock;5.10.2 -io.fabric8:knative-model;5.10.2 -io.fabric8:knative-tests;5.10.2 -io.fabric8:kubernetes-client;5.10.2 -io.fabric8:kubernetes-client-bom;5.10.2 -io.fabric8:kubernetes-examples;5.10.2 -io.fabric8:kubernetes-model;5.10.2 -io.fabric8:kubernetes-model-admissionregistration;5.10.2 -io.fabric8:kubernetes-model-apiextensions;5.10.2 -io.fabric8:kubernetes-model-apps;5.10.2 -io.fabric8:kubernetes-model-autoscaling;5.10.2 -io.fabric8:kubernetes-model-batch;5.10.2 -io.fabric8:kubernetes-model-certificates;5.10.2 -io.fabric8:kubernetes-model-common;5.10.2 -io.fabric8:kubernetes-model-coordination;5.10.2 -io.fabric8:kubernetes-model-core;5.10.2 -io.fabric8:kubernetes-model-discovery;5.10.2 -io.fabric8:kubernetes-model-events;5.10.2 -io.fabric8:kubernetes-model-extensions;5.10.2 -io.fabric8:kubernetes-model-flowcontrol;5.10.2 -io.fabric8:kubernetes-model-jsonschema2pojo;5.10.2 -io.fabric8:kubernetes-model-metrics;5.10.2 -io.fabric8:kubernetes-model-networking;5.10.2 -io.fabric8:kubernetes-model-node;5.10.2 -io.fabric8:kubernetes-model-policy;5.10.2 -io.fabric8:kubernetes-model-rbac;5.10.2 -io.fabric8:kubernetes-model-scheduling;5.10.2 -io.fabric8:kubernetes-model-storageclass;5.10.2 -io.fabric8:kubernetes-openshift-uberjar;5.10.2 -io.fabric8:kubernetes-server-mock;5.10.2 -io.fabric8:kubernetes-test;5.10.2 -io.fabric8:model-annotator;5.10.2 -io.fabric8:openshift-client;5.10.2 -io.fabric8:openshift-model;5.10.2 -io.fabric8:openshift-model-clusterautoscaling;5.10.2 -io.fabric8:openshift-model-console;5.10.2 -io.fabric8:openshift-model-machine;5.10.2 -io.fabric8:openshift-model-machineconfig;5.10.2 -io.fabric8:openshift-model-miscellaneous;5.10.2 -io.fabric8:openshift-model-monitoring;5.10.2 -io.fabric8:openshift-model-operator;5.10.2 -io.fabric8:openshift-model-operatorhub;5.10.2 -io.fabric8:openshift-model-storageversionmigrator;5.10.2 -io.fabric8:openshift-model-tuned;5.10.2 -io.fabric8:openshift-model-whereabouts;5.10.2 -io.fabric8:openshift-server-mock;5.10.2 -io.fabric8:service-catalog-examples;5.10.2 -io.fabric8:servicecatalog-client;5.10.2 -io.fabric8:servicecatalog-model;5.10.2 -io.fabric8:servicecatalog-server-mock;5.10.2 -io.fabric8:servicecatalog-tests;5.10.2 -io.fabric8:tekton-client;5.10.2 -io.fabric8:tekton-examples;5.10.2 -io.fabric8:tekton-mock;5.10.2 -io.fabric8:tekton-model-triggers;5.10.2 -io.fabric8:tekton-model-v1alpha1;5.10.2 -io.fabric8:tekton-model-v1beta1;5.10.2 -io.fabric8:tekton-tests;5.10.2 -io.fabric8:verticalpodautoscaler-client;5.10.2 -io.fabric8:verticalpodautoscaler-examples;5.10.2 -io.fabric8:verticalpodautoscaler-model-v1;5.10.2 -io.fabric8:verticalpodautoscaler-server-mock;5.10.2 -io.fabric8:verticalpodautoscaler-tests;5.10.2 -io.fabric8:volumesnapshot-client;5.10.2 -io.fabric8:volumesnapshot-examples;5.10.2 -io.fabric8:volumesnapshot-model;5.10.2 -io.fabric8:volumesnapshot-server-mock;5.10.2 -io.fabric8:volumesnapshot-tests;5.10.2 -io.github.lognet:grpc-spring-boot-starter;4.2.3 -io.github.openfeign.form:feign-form-spring;3.8.0 -io.github.openfeign:feign-annotation-error-decoder;11.10 -io.github.openfeign:feign-bom;11.10 -io.github.openfeign:feign-core;11.10 -io.github.openfeign:feign-dropwizard-metrics4;11.10 -io.github.openfeign:feign-dropwizard-metrics5;11.10 -io.github.openfeign:feign-googlehttpclient;11.10 -io.github.openfeign:feign-gson;11.10 -io.github.openfeign:feign-hc5;11.10 -io.github.openfeign:feign-httpclient;11.10 -io.github.openfeign:feign-hystrix;11.10 -io.github.openfeign:feign-jackson;11.10 -io.github.openfeign:feign-jackson-jaxb;11.10 -io.github.openfeign:feign-jackson-jr;11.10 -io.github.openfeign:feign-jaxb;11.10 -io.github.openfeign:feign-jaxrs;11.10 -io.github.openfeign:feign-jaxrs2;11.10 -io.github.openfeign:feign-json;11.10 -io.github.openfeign:feign-micrometer;11.10 -io.github.openfeign:feign-mock;11.10 -io.github.openfeign:feign-okhttp;11.10 -io.github.openfeign:feign-reactive-wrappers;11.10 -io.github.openfeign:feign-ribbon;11.10 -io.github.openfeign:feign-sax;11.10 -io.github.openfeign:feign-slf4j;11.10 -io.github.openfeign:feign-soap;11.10 -io.github.openfeign:feign-spring4;11.10 -io.github.resilience4j:resilience4j-all;1.7.0 -io.github.resilience4j:resilience4j-annotations;1.7.0 -io.github.resilience4j:resilience4j-bom;1.7.0 -io.github.resilience4j:resilience4j-bulkhead;1.7.0 -io.github.resilience4j:resilience4j-cache;1.7.0 -io.github.resilience4j:resilience4j-circuitbreaker;1.7.0 -io.github.resilience4j:resilience4j-circularbuffer;1.7.0 -io.github.resilience4j:resilience4j-consumer;1.7.0 -io.github.resilience4j:resilience4j-core;1.7.0 -io.github.resilience4j:resilience4j-feign;1.7.0 -io.github.resilience4j:resilience4j-kotlin;1.7.0 -io.github.resilience4j:resilience4j-metrics;1.7.0 -io.github.resilience4j:resilience4j-micrometer;1.7.0 -io.github.resilience4j:resilience4j-prometheus;1.7.0 -io.github.resilience4j:resilience4j-ratelimiter;1.7.0 -io.github.resilience4j:resilience4j-ratpack;1.7.0 -io.github.resilience4j:resilience4j-reactor;1.7.0 -io.github.resilience4j:resilience4j-retrofit;1.7.0 -io.github.resilience4j:resilience4j-retry;1.7.0 -io.github.resilience4j:resilience4j-rxjava2;1.7.0 -io.github.resilience4j:resilience4j-rxjava3;1.7.0 -io.github.resilience4j:resilience4j-spring;1.7.0 -io.github.resilience4j:resilience4j-spring-boot2;1.7.0 -io.github.resilience4j:resilience4j-spring-cloud2;1.7.0 -io.github.resilience4j:resilience4j-timelimiter;1.7.0 -io.github.resilience4j:resilience4j-vertx;1.7.0 -io.kubernetes:client-java;13.0.2 -io.kubernetes:client-java-extended;13.0.2 -io.kubernetes:client-java-spring-integration;13.0.2 -io.lettuce:lettuce-core;6.1.10.RELEASE -io.micrometer:micrometer-bom;1.9.17 -io.micrometer:micrometer-core;1.9.17 -io.micrometer:micrometer-registry-appoptics;1.9.17 -io.micrometer:micrometer-registry-atlas;1.9.17 -io.micrometer:micrometer-registry-azure-monitor;1.9.17 -io.micrometer:micrometer-registry-cloudwatch;1.9.17 -io.micrometer:micrometer-registry-cloudwatch2;1.9.17 -io.micrometer:micrometer-registry-datadog;1.9.17 -io.micrometer:micrometer-registry-dynatrace;1.9.17 -io.micrometer:micrometer-registry-elastic;1.9.17 -io.micrometer:micrometer-registry-ganglia;1.9.17 -io.micrometer:micrometer-registry-graphite;1.9.17 -io.micrometer:micrometer-registry-health;1.9.17 -io.micrometer:micrometer-registry-humio;1.9.17 -io.micrometer:micrometer-registry-influx;1.9.17 -io.micrometer:micrometer-registry-jmx;1.9.17 -io.micrometer:micrometer-registry-kairos;1.9.17 -io.micrometer:micrometer-registry-new-relic;1.9.17 -io.micrometer:micrometer-registry-opentsdb;1.9.17 -io.micrometer:micrometer-registry-otlp;1.9.17 -io.micrometer:micrometer-registry-prometheus;1.9.17 -io.micrometer:micrometer-registry-signalfx;1.9.17 -io.micrometer:micrometer-registry-stackdriver;1.9.17 -io.micrometer:micrometer-registry-statsd;1.9.17 -io.micrometer:micrometer-registry-wavefront;1.9.17 -io.micrometer:micrometer-test;1.9.17 -io.netty:netty-all;4.1.101.Final -io.netty:netty-bom;4.1.101.Final -io.netty:netty-buffer;4.1.101.Final -io.netty:netty-codec;4.1.101.Final -io.netty:netty-codec-dns;4.1.101.Final -io.netty:netty-codec-haproxy;4.1.101.Final -io.netty:netty-codec-http;4.1.101.Final -io.netty:netty-codec-http2;4.1.101.Final -io.netty:netty-codec-memcache;4.1.101.Final -io.netty:netty-codec-mqtt;4.1.101.Final -io.netty:netty-codec-redis;4.1.101.Final -io.netty:netty-codec-smtp;4.1.101.Final -io.netty:netty-codec-socks;4.1.101.Final -io.netty:netty-codec-stomp;4.1.101.Final -io.netty:netty-codec-xml;4.1.101.Final -io.netty:netty-common;4.1.101.Final -io.netty:netty-dev-tools;4.1.101.Final -io.netty:netty-example;4.1.101.Final -io.netty:netty-handler;4.1.101.Final -io.netty:netty-handler-proxy;4.1.101.Final -io.netty:netty-handler-ssl-ocsp;4.1.101.Final -io.netty:netty-resolver;4.1.101.Final -io.netty:netty-resolver-dns;4.1.101.Final -io.netty:netty-resolver-dns-classes-macos;4.1.101.Final -io.netty:netty-resolver-dns-native-macos;4.1.101.Final -io.netty:netty-tcnative;2.0.61.Final -io.netty:netty-tcnative-boringssl-static;2.0.61.Final -io.netty:netty-tcnative-classes;2.0.61.Final -io.netty:netty-transport;4.1.101.Final -io.netty:netty-transport-classes-epoll;4.1.101.Final -io.netty:netty-transport-classes-kqueue;4.1.101.Final -io.netty:netty-transport-native-epoll;4.1.101.Final -io.netty:netty-transport-native-kqueue;4.1.101.Final -io.netty:netty-transport-native-unix-common;4.1.101.Final -io.netty:netty-transport-rxtx;4.1.101.Final -io.netty:netty-transport-sctp;4.1.101.Final -io.netty:netty-transport-udt;4.1.101.Final -io.opentracing.brave:brave-opentracing;0.37.5 -io.projectreactor.addons:reactor-adapter;3.4.10 -io.projectreactor.addons:reactor-extra;3.4.10 -io.projectreactor.addons:reactor-pool;0.2.12 -io.projectreactor.kafka:reactor-kafka;1.3.22 -io.projectreactor.kotlin:reactor-kotlin-extensions;1.1.10 -io.projectreactor.netty:reactor-netty;1.0.39 -io.projectreactor.netty:reactor-netty-core;1.0.39 -io.projectreactor.netty:reactor-netty-http;1.0.39 -io.projectreactor.netty:reactor-netty-http-brave;1.0.39 -io.projectreactor.rabbitmq:reactor-rabbitmq;1.5.6 -io.projectreactor:reactor-bom;2020.0.38 -io.projectreactor:reactor-core;3.4.34 -io.projectreactor:reactor-test;3.4.34 -io.projectreactor:reactor-tools;3.4.34 -io.prometheus:simpleclient;0.15.0 -io.prometheus:simpleclient_bom;0.15.0 -io.prometheus:simpleclient_caffeine;0.15.0 -io.prometheus:simpleclient_common;0.15.0 -io.prometheus:simpleclient_dropwizard;0.15.0 -io.prometheus:simpleclient_graphite_bridge;0.15.0 -io.prometheus:simpleclient_guava;0.15.0 -io.prometheus:simpleclient_hibernate;0.15.0 -io.prometheus:simpleclient_hotspot;0.15.0 -io.prometheus:simpleclient_httpserver;0.15.0 -io.prometheus:simpleclient_jetty;0.15.0 -io.prometheus:simpleclient_jetty_jdk8;0.15.0 -io.prometheus:simpleclient_log4j;0.15.0 -io.prometheus:simpleclient_log4j2;0.15.0 -io.prometheus:simpleclient_logback;0.15.0 -io.prometheus:simpleclient_pushgateway;0.15.0 -io.prometheus:simpleclient_servlet;0.15.0 -io.prometheus:simpleclient_servlet_jakarta;0.15.0 -io.prometheus:simpleclient_spring_boot;0.15.0 -io.prometheus:simpleclient_spring_web;0.15.0 -io.prometheus:simpleclient_tracer_otel;0.15.0 -io.prometheus:simpleclient_tracer_otel_agent;0.15.0 -io.prometheus:simpleclient_vertx;0.15.0 -io.r2dbc:r2dbc-bom;Borca-SR2 -io.r2dbc:r2dbc-h2;0.9.1.RELEASE -io.r2dbc:r2dbc-mssql;0.9.0.RELEASE -io.r2dbc:r2dbc-pool;0.9.2.RELEASE -io.r2dbc:r2dbc-proxy;0.9.1.RELEASE -io.r2dbc:r2dbc-spi;0.9.1.RELEASE -io.reactivex.rxjava2:rxjava;2.2.21 -io.reactivex:rxjava;1.3.8 -io.reactivex:rxjava-reactive-streams;1.2.1 -io.rest-assured.examples:kotlin-example;4.5.1 -io.rest-assured.examples:rest-assured-itest-java;4.5.1 -io.rest-assured.examples:scala-example;4.5.1 -io.rest-assured.examples:scala-mock-mvc-example;4.5.1 -io.rest-assured.examples:scalatra-example;4.5.1 -io.rest-assured.examples:scalatra-webapp;4.5.1 -io.rest-assured.examples:spring-mvc-webapp;4.5.1 -io.rest-assured:json-path;4.5.1 -io.rest-assured:json-schema-validator;4.5.1 -io.rest-assured:kotlin-extensions;4.5.1 -io.rest-assured:rest-assured;4.5.1 -io.rest-assured:rest-assured-all;4.5.1 -io.rest-assured:rest-assured-bom;4.5.1 -io.rest-assured:rest-assured-common;4.5.1 -io.rest-assured:scala-support;4.5.1 -io.rest-assured:spring-commons;4.5.1 -io.rest-assured:spring-mock-mvc;4.5.1 -io.rest-assured:spring-mock-mvc-kotlin-extensions;4.5.1 -io.rest-assured:spring-web-test-client;4.5.1 -io.rest-assured:xml-path;4.5.1 -io.rsocket:rsocket-bom;1.1.3 -io.rsocket:rsocket-core;1.1.3 -io.rsocket:rsocket-load-balancer;1.1.3 -io.rsocket:rsocket-micrometer;1.1.3 -io.rsocket:rsocket-test;1.1.3 -io.rsocket:rsocket-transport-local;1.1.3 -io.rsocket:rsocket-transport-netty;1.1.3 -io.specto:hoverfly-java;0.13.0 -io.specto:hoverfly-java-junit5;0.13.0 -io.spring.gradle:dependency-management-plugin;1.0.15.RELEASE -io.undertow:undertow-core;2.2.28.Final -io.undertow:undertow-servlet;2.2.28.Final -io.undertow:undertow-websockets-jsr;2.2.28.Final -io.zipkin.brave:brave;5.13.11 -io.zipkin.brave:brave-bom;5.13.11 -io.zipkin.brave:brave-context-jfr;5.13.11 -io.zipkin.brave:brave-context-log4j12;5.13.11 -io.zipkin.brave:brave-context-log4j2;5.13.11 -io.zipkin.brave:brave-context-rxjava2;5.13.11 -io.zipkin.brave:brave-context-slf4j;5.13.11 -io.zipkin.brave:brave-instrumentation-dubbo;5.13.11 -io.zipkin.brave:brave-instrumentation-dubbo-rpc;5.13.11 -io.zipkin.brave:brave-instrumentation-grpc;5.13.11 -io.zipkin.brave:brave-instrumentation-http;5.13.11 -io.zipkin.brave:brave-instrumentation-http-tests;5.13.11 -io.zipkin.brave:brave-instrumentation-httpasyncclient;5.13.11 -io.zipkin.brave:brave-instrumentation-httpclient;5.13.11 -io.zipkin.brave:brave-instrumentation-jaxrs2;5.13.11 -io.zipkin.brave:brave-instrumentation-jersey-server;5.13.11 -io.zipkin.brave:brave-instrumentation-jms;5.13.11 -io.zipkin.brave:brave-instrumentation-kafka-clients;5.13.11 -io.zipkin.brave:brave-instrumentation-kafka-streams;5.13.11 -io.zipkin.brave:brave-instrumentation-messaging;5.13.11 -io.zipkin.brave:brave-instrumentation-mongodb;5.13.11 -io.zipkin.brave:brave-instrumentation-mysql;5.13.11 -io.zipkin.brave:brave-instrumentation-mysql6;5.13.11 -io.zipkin.brave:brave-instrumentation-mysql8;5.13.11 -io.zipkin.brave:brave-instrumentation-netty-codec-http;5.13.11 -io.zipkin.brave:brave-instrumentation-okhttp3;5.13.11 -io.zipkin.brave:brave-instrumentation-p6spy;5.13.11 -io.zipkin.brave:brave-instrumentation-rpc;5.13.11 -io.zipkin.brave:brave-instrumentation-servlet;5.13.11 -io.zipkin.brave:brave-instrumentation-sparkjava;5.13.11 -io.zipkin.brave:brave-instrumentation-spring-rabbit;5.13.11 -io.zipkin.brave:brave-instrumentation-spring-web;5.13.11 -io.zipkin.brave:brave-instrumentation-spring-webmvc;5.13.11 -io.zipkin.brave:brave-instrumentation-vertx-web;5.13.11 -io.zipkin.brave:brave-spring-beans;5.13.11 -io.zipkin.brave:brave-tests;5.13.11 -io.zipkin.proto3:zipkin-proto3;1.0.0 -io.zipkin.reporter2:zipkin-reporter;2.16.3 -io.zipkin.reporter2:zipkin-reporter-bom;2.16.3 -io.zipkin.reporter2:zipkin-reporter-brave;2.16.3 -io.zipkin.reporter2:zipkin-reporter-metrics-micrometer;2.16.3 -io.zipkin.reporter2:zipkin-reporter-spring-beans;2.16.3 -io.zipkin.reporter2:zipkin-sender-activemq-client;2.16.3 -io.zipkin.reporter2:zipkin-sender-amqp-client;2.16.3 -io.zipkin.reporter2:zipkin-sender-kafka;2.16.3 -io.zipkin.reporter2:zipkin-sender-kafka08;2.16.3 -io.zipkin.reporter2:zipkin-sender-libthrift;2.16.3 -io.zipkin.reporter2:zipkin-sender-okhttp3;2.16.3 -io.zipkin.reporter2:zipkin-sender-urlconnection;2.16.3 -io.zipkin.zipkin2:zipkin;2.23.2 -jakarta.activation:jakarta.activation-api;1.2.2 -jakarta.annotation:jakarta.annotation-api;1.3.5 -jakarta.jms:jakarta.jms-api;2.0.3 -jakarta.json.bind:jakarta.json.bind-api;1.0.2 -jakarta.json:jakarta.json-api;1.1.6 -jakarta.mail:jakarta.mail-api;1.6.7 -jakarta.management.j2ee:jakarta.management.j2ee-api;1.1.4 -jakarta.persistence:jakarta.persistence-api;2.2.3 -jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api;1.2.7 -jakarta.servlet:jakarta.servlet-api;4.0.4 -jakarta.transaction:jakarta.transaction-api;1.3.3 -jakarta.validation:jakarta.validation-api;2.0.2 -jakarta.websocket:jakarta.websocket-api;1.1.2 -jakarta.ws.rs:jakarta.ws.rs-api;2.1.6 -jakarta.xml.bind:jakarta.xml.bind-api;2.3.3 -jakarta.xml.soap:jakarta.xml.soap-api;1.4.2 -jakarta.xml.ws:jakarta.xml.ws-api;2.3.3 -javax.activation:javax.activation-api;1.2.0 -javax.annotation:javax.annotation-api;1.3.2 -javax.cache:cache-api;1.1.1 -javax.jms:javax.jms-api;2.0.1 -javax.json.bind:javax.json.bind-api;1.0 -javax.json:javax.json-api;1.1.4 -javax.mail:javax.mail-api;1.6.2 -javax.money:money-api;1.1 -javax.persistence:javax.persistence-api;2.2 -javax.servlet:javax.servlet-api;4.0.1 -javax.servlet:jstl;1.2 -javax.transaction:javax.transaction-api;1.3 -javax.validation:validation-api;2.0.1.Final -javax.websocket:javax.websocket-api;1.1 -javax.xml.bind:jaxb-api;2.3.1 -javax.xml.ws:jaxws-api;2.3.1 -jaxen:jaxen;1.2.0 -junit:junit;4.13.2 -me.snowdrop:istio-client;1.7.7.1 -net.bytebuddy:byte-buddy;1.12.23 -net.bytebuddy:byte-buddy-agent;1.12.23 -net.minidev:json-smart;2.4.11 -net.sf.ehcache:ehcache;2.10.9.2 -net.sourceforge.htmlunit:htmlunit;2.60.0 -net.sourceforge.jtds:jtds;1.3.1 -net.sourceforge.nekohtml:nekohtml;1.9.22 -nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect;3.0.0 -org.apache.activemq:activemq-amqp;5.16.7 -org.apache.activemq:activemq-blueprint;5.16.7 -org.apache.activemq:activemq-broker;5.16.7 -org.apache.activemq:activemq-camel;5.16.7 -org.apache.activemq:activemq-client;5.16.7 -org.apache.activemq:activemq-console;5.16.7 -org.apache.activemq:activemq-http;5.16.7 -org.apache.activemq:activemq-jaas;5.16.7 -org.apache.activemq:activemq-jdbc-store;5.16.7 -org.apache.activemq:activemq-jms-pool;5.16.7 -org.apache.activemq:activemq-kahadb-store;5.16.7 -org.apache.activemq:activemq-karaf;5.16.7 -org.apache.activemq:activemq-leveldb-store;5.16.7 -org.apache.activemq:activemq-log4j-appender;5.16.7 -org.apache.activemq:activemq-mqtt;5.16.7 -org.apache.activemq:activemq-openwire-generator;5.16.7 -org.apache.activemq:activemq-openwire-legacy;5.16.7 -org.apache.activemq:activemq-osgi;5.16.7 -org.apache.activemq:activemq-partition;5.16.7 -org.apache.activemq:activemq-pool;5.16.7 -org.apache.activemq:activemq-ra;5.16.7 -org.apache.activemq:activemq-run;5.16.7 -org.apache.activemq:activemq-runtime-config;5.16.7 -org.apache.activemq:activemq-shiro;5.16.7 -org.apache.activemq:activemq-spring;5.16.7 -org.apache.activemq:activemq-stomp;5.16.7 -org.apache.activemq:activemq-web;5.16.7 -org.apache.activemq:artemis-amqp-protocol;2.19.1 -org.apache.activemq:artemis-commons;2.19.1 -org.apache.activemq:artemis-core-client;2.19.1 -org.apache.activemq:artemis-jdbc-store;2.19.1 -org.apache.activemq:artemis-jms-client;2.19.1 -org.apache.activemq:artemis-jms-server;2.19.1 -org.apache.activemq:artemis-journal;2.19.1 -org.apache.activemq:artemis-quorum-api;2.19.1 -org.apache.activemq:artemis-selector;2.19.1 -org.apache.activemq:artemis-server;2.19.1 -org.apache.activemq:artemis-service-extensions;2.19.1 -org.apache.commons:commons-collections4;4.4 -org.apache.commons:commons-dbcp2;2.9.0 -org.apache.commons:commons-lang3;3.12.0 -org.apache.commons:commons-pool2;2.11.1 -org.apache.curator:curator-framework;5.1.0 -org.apache.curator:curator-recipes;5.1.0 -org.apache.curator:curator-test;5.1.0 -org.apache.curator:curator-x-discovery;5.1.0 -org.apache.derby:derby;10.14.2.0 -org.apache.derby:derbyclient;10.14.2.0 -org.apache.derby:derbynet;10.14.2.0 -org.apache.derby:derbyoptionaltools;10.14.2.0 -org.apache.derby:derbytools;10.14.2.0 -org.apache.httpcomponents.client5:httpclient5;5.1.4 -org.apache.httpcomponents.client5:httpclient5-cache;5.1.4 -org.apache.httpcomponents.client5:httpclient5-fluent;5.1.4 -org.apache.httpcomponents.client5:httpclient5-win;5.1.4 -org.apache.httpcomponents.core5:httpcore5;5.1.5 -org.apache.httpcomponents.core5:httpcore5-h2;5.1.5 -org.apache.httpcomponents.core5:httpcore5-reactive;5.1.5 -org.apache.httpcomponents:fluent-hc;4.5.14 -org.apache.httpcomponents:httpasyncclient;4.1.5 -org.apache.httpcomponents:httpclient;4.5.14 -org.apache.httpcomponents:httpclient-cache;4.5.14 -org.apache.httpcomponents:httpclient-osgi;4.5.14 -org.apache.httpcomponents:httpclient-win;4.5.14 -org.apache.httpcomponents:httpcore;4.4.16 -org.apache.httpcomponents:httpcore-nio;4.4.16 -org.apache.httpcomponents:httpmime;4.5.14 -org.apache.johnzon:johnzon-core;1.2.21 -org.apache.johnzon:johnzon-jaxrs;1.2.21 -org.apache.johnzon:johnzon-jsonb;1.2.21 -org.apache.johnzon:johnzon-jsonb-extras;1.2.21 -org.apache.johnzon:johnzon-jsonschema;1.2.21 -org.apache.johnzon:johnzon-mapper;1.2.21 -org.apache.johnzon:johnzon-maven-plugin;1.2.21 -org.apache.johnzon:johnzon-websocket;1.2.21 -org.apache.kafka:connect;3.1.2 -org.apache.kafka:connect-api;3.1.2 -org.apache.kafka:connect-basic-auth-extension;3.1.2 -org.apache.kafka:connect-file;3.1.2 -org.apache.kafka:connect-json;3.1.2 -org.apache.kafka:connect-mirror;3.1.2 -org.apache.kafka:connect-mirror-client;3.1.2 -org.apache.kafka:connect-runtime;3.1.2 -org.apache.kafka:connect-transforms;3.1.2 -org.apache.kafka:generator;3.1.2 -org.apache.kafka:kafka-clients;3.1.2 -org.apache.kafka:kafka-log4j-appender;3.1.2 -org.apache.kafka:kafka-metadata;3.1.2 -org.apache.kafka:kafka-raft;3.1.2 -org.apache.kafka:kafka-server-common;3.1.2 -org.apache.kafka:kafka-shell;3.1.2 -org.apache.kafka:kafka-storage;3.1.2 -org.apache.kafka:kafka-storage-api;3.1.2 -org.apache.kafka:kafka-streams;3.1.2 -org.apache.kafka:kafka-streams-scala_2.12;3.1.2 -org.apache.kafka:kafka-streams-scala_2.13;3.1.2 -org.apache.kafka:kafka-streams-test-utils;3.1.2 -org.apache.kafka:kafka-tools;3.1.2 -org.apache.kafka:kafka_2.12;3.1.2 -org.apache.kafka:kafka_2.13;3.1.2 -org.apache.kafka:trogdor;3.1.2 -org.apache.logging.log4j:log4j-1.2-api;2.17.2 -org.apache.logging.log4j:log4j-api;2.17.2 -org.apache.logging.log4j:log4j-appserver;2.17.2 -org.apache.logging.log4j:log4j-bom;2.17.2 -org.apache.logging.log4j:log4j-cassandra;2.17.2 -org.apache.logging.log4j:log4j-core;2.17.2 -org.apache.logging.log4j:log4j-couchdb;2.17.2 -org.apache.logging.log4j:log4j-docker;2.17.2 -org.apache.logging.log4j:log4j-flume-ng;2.17.2 -org.apache.logging.log4j:log4j-iostreams;2.17.2 -org.apache.logging.log4j:log4j-jcl;2.17.2 -org.apache.logging.log4j:log4j-jmx-gui;2.17.2 -org.apache.logging.log4j:log4j-jpa;2.17.2 -org.apache.logging.log4j:log4j-jpl;2.17.2 -org.apache.logging.log4j:log4j-jul;2.17.2 -org.apache.logging.log4j:log4j-kubernetes;2.17.2 -org.apache.logging.log4j:log4j-layout-template-json;2.17.2 -org.apache.logging.log4j:log4j-liquibase;2.17.2 -org.apache.logging.log4j:log4j-mongodb3;2.17.2 -org.apache.logging.log4j:log4j-mongodb4;2.17.2 -org.apache.logging.log4j:log4j-slf4j-impl;2.17.2 -org.apache.logging.log4j:log4j-slf4j18-impl;2.17.2 -org.apache.logging.log4j:log4j-spring-boot;2.17.2 -org.apache.logging.log4j:log4j-spring-cloud-config-client;2.17.2 -org.apache.logging.log4j:log4j-taglib;2.17.2 -org.apache.logging.log4j:log4j-to-slf4j;2.17.2 -org.apache.logging.log4j:log4j-web;2.17.2 -org.apache.maven.plugins:maven-antrun-plugin;3.0.0 -org.apache.maven.plugins:maven-assembly-plugin;3.3.0 -org.apache.maven.plugins:maven-clean-plugin;3.2.0 -org.apache.maven.plugins:maven-compiler-plugin;3.10.1 -org.apache.maven.plugins:maven-dependency-plugin;3.3.0 -org.apache.maven.plugins:maven-deploy-plugin;2.8.2 -org.apache.maven.plugins:maven-enforcer-plugin;3.0.0 -org.apache.maven.plugins:maven-failsafe-plugin;2.22.2 -org.apache.maven.plugins:maven-help-plugin;3.2.0 -org.apache.maven.plugins:maven-install-plugin;2.5.2 -org.apache.maven.plugins:maven-invoker-plugin;3.2.2 -org.apache.maven.plugins:maven-jar-plugin;3.2.2 -org.apache.maven.plugins:maven-javadoc-plugin;3.4.1 -org.apache.maven.plugins:maven-release-plugin;2.5.3 -org.apache.maven.plugins:maven-resources-plugin;3.2.0 -org.apache.maven.plugins:maven-shade-plugin;3.3.0 -org.apache.maven.plugins:maven-source-plugin;3.2.1 -org.apache.maven.plugins:maven-surefire-plugin;2.22.2 -org.apache.maven.plugins:maven-war-plugin;3.3.2 -org.apache.solr:solr-analysis-extras;8.11.2 -org.apache.solr:solr-analytics;8.11.2 -org.apache.solr:solr-cell;8.11.2 -org.apache.solr:solr-core;8.11.2 -org.apache.solr:solr-dataimporthandler;8.11.2 -org.apache.solr:solr-dataimporthandler-extras;8.11.2 -org.apache.solr:solr-gcs-repository;8.11.2 -org.apache.solr:solr-jaegertracer-configurator;8.11.2 -org.apache.solr:solr-langid;8.11.2 -org.apache.solr:solr-ltr;8.11.2 -org.apache.solr:solr-prometheus-exporter;8.11.2 -org.apache.solr:solr-s3-repository;8.11.2 -org.apache.solr:solr-solrj;8.11.2 -org.apache.solr:solr-test-framework;8.11.2 -org.apache.solr:solr-velocity;8.11.2 -org.apache.tomcat.embed:tomcat-embed-core;9.0.83 -org.apache.tomcat.embed:tomcat-embed-el;9.0.83 -org.apache.tomcat.embed:tomcat-embed-jasper;9.0.83 -org.apache.tomcat.embed:tomcat-embed-websocket;9.0.83 -org.apache.tomcat:tomcat-annotations-api;9.0.83 -org.apache.tomcat:tomcat-jdbc;9.0.83 -org.apache.tomcat:tomcat-jsp-api;9.0.83 -org.arquillian.cube:arquillian-cube-kubernetes;1.15.2 -org.arquillian.cube:arquillian-cube-openshift;1.15.2 -org.arquillian.cube:arquillian-cube-requirement;1.15.2 -org.aspectj:aspectjrt;1.9.7 -org.aspectj:aspectjtools;1.9.7 -org.aspectj:aspectjweaver;1.9.7 -org.assertj:assertj-core;3.22.0 -org.awaitility:awaitility;4.2.0 -org.awaitility:awaitility-groovy;4.2.0 -org.awaitility:awaitility-kotlin;4.2.0 -org.awaitility:awaitility-scala;4.2.0 -org.cache2k:cache2k-api;2.6.1.Final -org.cache2k:cache2k-config;2.6.1.Final -org.cache2k:cache2k-core;2.6.1.Final -org.cache2k:cache2k-jcache;2.6.1.Final -org.cache2k:cache2k-micrometer;2.6.1.Final -org.cache2k:cache2k-spring;2.6.1.Final -org.codehaus.groovy:groovy;3.0.19 -org.codehaus.groovy:groovy-ant;3.0.19 -org.codehaus.groovy:groovy-astbuilder;3.0.19 -org.codehaus.groovy:groovy-bom;3.0.19 -org.codehaus.groovy:groovy-bsf;3.0.19 -org.codehaus.groovy:groovy-cli-commons;3.0.19 -org.codehaus.groovy:groovy-cli-picocli;3.0.19 -org.codehaus.groovy:groovy-console;3.0.19 -org.codehaus.groovy:groovy-datetime;3.0.19 -org.codehaus.groovy:groovy-dateutil;3.0.19 -org.codehaus.groovy:groovy-docgenerator;3.0.19 -org.codehaus.groovy:groovy-groovydoc;3.0.19 -org.codehaus.groovy:groovy-groovysh;3.0.19 -org.codehaus.groovy:groovy-jaxb;3.0.19 -org.codehaus.groovy:groovy-jmx;3.0.19 -org.codehaus.groovy:groovy-json;3.0.19 -org.codehaus.groovy:groovy-jsr223;3.0.19 -org.codehaus.groovy:groovy-macro;3.0.19 -org.codehaus.groovy:groovy-nio;3.0.19 -org.codehaus.groovy:groovy-servlet;3.0.19 -org.codehaus.groovy:groovy-sql;3.0.19 -org.codehaus.groovy:groovy-swing;3.0.19 -org.codehaus.groovy:groovy-templates;3.0.19 -org.codehaus.groovy:groovy-test;3.0.19 -org.codehaus.groovy:groovy-test-junit5;3.0.19 -org.codehaus.groovy:groovy-testng;3.0.19 -org.codehaus.groovy:groovy-xml;3.0.19 -org.codehaus.groovy:groovy-yaml;3.0.19 -org.codehaus.janino:commons-compiler;3.1.10 -org.codehaus.janino:commons-compiler-jdk;3.1.10 -org.codehaus.janino:janino;3.1.10 -org.codehaus.mojo:build-helper-maven-plugin;3.3.0 -org.codehaus.mojo:versions-maven-plugin;2.10.0 -org.codehaus.mojo:xml-maven-plugin;1.0.2 -org.eclipse.jetty.fcgi:fcgi-client;9.4.53.v20231009 -org.eclipse.jetty.fcgi:fcgi-server;9.4.53.v20231009 -org.eclipse.jetty.gcloud:jetty-gcloud-session-manager;9.4.53.v20231009 -org.eclipse.jetty.http2:http2-client;9.4.53.v20231009 -org.eclipse.jetty.http2:http2-common;9.4.53.v20231009 -org.eclipse.jetty.http2:http2-hpack;9.4.53.v20231009 -org.eclipse.jetty.http2:http2-http-client-transport;9.4.53.v20231009 -org.eclipse.jetty.http2:http2-server;9.4.53.v20231009 -org.eclipse.jetty.memcached:jetty-memcached-sessions;9.4.53.v20231009 -org.eclipse.jetty.orbit:javax.servlet.jsp;2.2.0.v201112011158 -org.eclipse.jetty.osgi:jetty-httpservice;9.4.53.v20231009 -org.eclipse.jetty.osgi:jetty-osgi-boot;9.4.53.v20231009 -org.eclipse.jetty.osgi:jetty-osgi-boot-jsp;9.4.53.v20231009 -org.eclipse.jetty.osgi:jetty-osgi-boot-warurl;9.4.53.v20231009 -org.eclipse.jetty.websocket:javax-websocket-client-impl;9.4.53.v20231009 -org.eclipse.jetty.websocket:javax-websocket-server-impl;9.4.53.v20231009 -org.eclipse.jetty.websocket:websocket-api;9.4.53.v20231009 -org.eclipse.jetty.websocket:websocket-client;9.4.53.v20231009 -org.eclipse.jetty.websocket:websocket-common;9.4.53.v20231009 -org.eclipse.jetty.websocket:websocket-server;9.4.53.v20231009 -org.eclipse.jetty.websocket:websocket-servlet;9.4.53.v20231009 -org.eclipse.jetty:apache-jsp;9.4.53.v20231009 -org.eclipse.jetty:apache-jstl;9.4.53.v20231009 -org.eclipse.jetty:infinispan-common;9.4.53.v20231009 -org.eclipse.jetty:infinispan-embedded-query;9.4.53.v20231009 -org.eclipse.jetty:infinispan-remote-query;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-client;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-conscrypt-client;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-conscrypt-server;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-java-client;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-java-server;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-openjdk8-client;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-openjdk8-server;9.4.53.v20231009 -org.eclipse.jetty:jetty-alpn-server;9.4.53.v20231009 -org.eclipse.jetty:jetty-annotations;9.4.53.v20231009 -org.eclipse.jetty:jetty-ant;9.4.53.v20231009 -org.eclipse.jetty:jetty-bom;9.4.53.v20231009 -org.eclipse.jetty:jetty-client;9.4.53.v20231009 -org.eclipse.jetty:jetty-continuation;9.4.53.v20231009 -org.eclipse.jetty:jetty-deploy;9.4.53.v20231009 -org.eclipse.jetty:jetty-distribution;9.4.53.v20231009 -org.eclipse.jetty:jetty-hazelcast;9.4.53.v20231009 -org.eclipse.jetty:jetty-home;9.4.53.v20231009 -org.eclipse.jetty:jetty-http;9.4.53.v20231009 -org.eclipse.jetty:jetty-http-spi;9.4.53.v20231009 -org.eclipse.jetty:jetty-io;9.4.53.v20231009 -org.eclipse.jetty:jetty-jaas;9.4.53.v20231009 -org.eclipse.jetty:jetty-jaspi;9.4.53.v20231009 -org.eclipse.jetty:jetty-jmx;9.4.53.v20231009 -org.eclipse.jetty:jetty-jndi;9.4.53.v20231009 -org.eclipse.jetty:jetty-nosql;9.4.53.v20231009 -org.eclipse.jetty:jetty-openid;9.4.53.v20231009 -org.eclipse.jetty:jetty-plus;9.4.53.v20231009 -org.eclipse.jetty:jetty-proxy;9.4.53.v20231009 -org.eclipse.jetty:jetty-quickstart;9.4.53.v20231009 -org.eclipse.jetty:jetty-reactive-httpclient;1.1.15 -org.eclipse.jetty:jetty-rewrite;9.4.53.v20231009 -org.eclipse.jetty:jetty-security;9.4.53.v20231009 -org.eclipse.jetty:jetty-server;9.4.53.v20231009 -org.eclipse.jetty:jetty-servlet;9.4.53.v20231009 -org.eclipse.jetty:jetty-servlets;9.4.53.v20231009 -org.eclipse.jetty:jetty-spring;9.4.53.v20231009 -org.eclipse.jetty:jetty-unixsocket;9.4.53.v20231009 -org.eclipse.jetty:jetty-util;9.4.53.v20231009 -org.eclipse.jetty:jetty-util-ajax;9.4.53.v20231009 -org.eclipse.jetty:jetty-webapp;9.4.53.v20231009 -org.eclipse.jetty:jetty-xml;9.4.53.v20231009 -org.eclipse.jgit:org.eclipse.jgit;5.13.2.202306221912-r -org.eclipse.jgit:org.eclipse.jgit.http.apache;5.13.2.202306221912-r -org.eclipse.jgit:org.eclipse.jgit.junit.http;5.13.2.202306221912-r -org.eclipse.jgit:org.eclipse.jgit.ssh.apache;5.13.2.202306221912-r -org.ehcache:ehcache;3.10.8 -org.ehcache:ehcache-clustered;3.10.8 -org.ehcache:ehcache-transactions;3.10.8 -org.elasticsearch.client:elasticsearch-rest-client;7.17.15 -org.elasticsearch.client:elasticsearch-rest-client-sniffer;7.17.15 -org.elasticsearch.client:elasticsearch-rest-high-level-client;7.17.15 -org.elasticsearch.client:transport;7.17.15 -org.elasticsearch.distribution.integ-test-zip:elasticsearch;7.17.15 -org.elasticsearch.plugin:transport-netty4-client;7.17.15 -org.elasticsearch:elasticsearch;7.17.15 -org.firebirdsql.jdbc:jaybird;4.0.9.java8 -org.firebirdsql.jdbc:jaybird-jdk18;4.0.9.java8 -org.flywaydb:flyway-core;8.5.13 -org.flywaydb:flyway-firebird;8.5.13 -org.flywaydb:flyway-maven-plugin;8.5.13 -org.flywaydb:flyway-mysql;8.5.13 -org.flywaydb:flyway-sqlserver;8.5.13 -org.freemarker:freemarker;2.3.32 -org.glassfish.jaxb:codemodel;2.3.9 -org.glassfish.jaxb:codemodel-annotation-compiler;2.3.9 -org.glassfish.jaxb:jaxb-jxc;2.3.9 -org.glassfish.jaxb:jaxb-runtime;2.3.9 -org.glassfish.jaxb:jaxb-xjc;2.3.9 -org.glassfish.jaxb:txw2;2.3.9 -org.glassfish.jaxb:txwc2;2.3.9 -org.glassfish.jaxb:xsom;2.3.9 -org.glassfish.jersey.bundles:jaxrs-ri;2.35 -org.glassfish.jersey.connectors:jersey-apache-connector;2.35 -org.glassfish.jersey.connectors:jersey-grizzly-connector;2.35 -org.glassfish.jersey.connectors:jersey-helidon-connector;2.35 -org.glassfish.jersey.connectors:jersey-jdk-connector;2.35 -org.glassfish.jersey.connectors:jersey-jetty-connector;2.35 -org.glassfish.jersey.connectors:jersey-netty-connector;2.35 -org.glassfish.jersey.containers.glassfish:jersey-gf-ejb;2.35 -org.glassfish.jersey.containers:jersey-container-grizzly2-http;2.35 -org.glassfish.jersey.containers:jersey-container-grizzly2-servlet;2.35 -org.glassfish.jersey.containers:jersey-container-jdk-http;2.35 -org.glassfish.jersey.containers:jersey-container-jetty-http;2.35 -org.glassfish.jersey.containers:jersey-container-jetty-servlet;2.35 -org.glassfish.jersey.containers:jersey-container-netty-http;2.35 -org.glassfish.jersey.containers:jersey-container-servlet;2.35 -org.glassfish.jersey.containers:jersey-container-servlet-core;2.35 -org.glassfish.jersey.containers:jersey-container-simple-http;2.35 -org.glassfish.jersey.core:jersey-client;2.35 -org.glassfish.jersey.core:jersey-common;2.35 -org.glassfish.jersey.core:jersey-server;2.35 -org.glassfish.jersey.ext.cdi:jersey-cdi-rs-inject;2.35 -org.glassfish.jersey.ext.cdi:jersey-cdi1x;2.35 -org.glassfish.jersey.ext.cdi:jersey-cdi1x-ban-custom-hk2-binding;2.35 -org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet;2.35 -org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction;2.35 -org.glassfish.jersey.ext.cdi:jersey-cdi1x-validation;2.35 -org.glassfish.jersey.ext.cdi:jersey-weld2-se;2.35 -org.glassfish.jersey.ext.microprofile:jersey-mp-config;2.35 -org.glassfish.jersey.ext.microprofile:jersey-mp-rest-client;2.35 -org.glassfish.jersey.ext.rx:jersey-rx-client-guava;2.35 -org.glassfish.jersey.ext.rx:jersey-rx-client-rxjava;2.35 -org.glassfish.jersey.ext.rx:jersey-rx-client-rxjava2;2.35 -org.glassfish.jersey.ext:jersey-bean-validation;2.35 -org.glassfish.jersey.ext:jersey-declarative-linking;2.35 -org.glassfish.jersey.ext:jersey-entity-filtering;2.35 -org.glassfish.jersey.ext:jersey-metainf-services;2.35 -org.glassfish.jersey.ext:jersey-mvc;2.35 -org.glassfish.jersey.ext:jersey-mvc-bean-validation;2.35 -org.glassfish.jersey.ext:jersey-mvc-freemarker;2.35 -org.glassfish.jersey.ext:jersey-mvc-jsp;2.35 -org.glassfish.jersey.ext:jersey-mvc-mustache;2.35 -org.glassfish.jersey.ext:jersey-proxy-client;2.35 -org.glassfish.jersey.ext:jersey-servlet-portability;2.35 -org.glassfish.jersey.ext:jersey-spring4;2.35 -org.glassfish.jersey.ext:jersey-spring5;2.35 -org.glassfish.jersey.ext:jersey-wadl-doclet;2.35 -org.glassfish.jersey.inject:jersey-cdi2-se;2.35 -org.glassfish.jersey.inject:jersey-hk2;2.35 -org.glassfish.jersey.media:jersey-media-jaxb;2.35 -org.glassfish.jersey.media:jersey-media-json-binding;2.35 -org.glassfish.jersey.media:jersey-media-json-jackson;2.35 -org.glassfish.jersey.media:jersey-media-json-jettison;2.35 -org.glassfish.jersey.media:jersey-media-json-processing;2.35 -org.glassfish.jersey.media:jersey-media-kryo;2.35 -org.glassfish.jersey.media:jersey-media-moxy;2.35 -org.glassfish.jersey.media:jersey-media-multipart;2.35 -org.glassfish.jersey.media:jersey-media-sse;2.35 -org.glassfish.jersey.security:oauth1-client;2.35 -org.glassfish.jersey.security:oauth1-server;2.35 -org.glassfish.jersey.security:oauth1-signature;2.35 -org.glassfish.jersey.security:oauth2-client;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-bundle;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-external;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-inmemory;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jdk-http;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty;2.35 -org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-simple;2.35 -org.glassfish.jersey.test-framework:jersey-test-framework-core;2.35 -org.glassfish.jersey.test-framework:jersey-test-framework-util;2.35 -org.glassfish.jersey:jersey-bom;2.35 -org.glassfish.web:jakarta.servlet.jsp.jstl;1.2.6 -org.glassfish:jakarta.el;3.0.4 -org.hamcrest:hamcrest;2.2 -org.hamcrest:hamcrest-core;2.2 -org.hamcrest:hamcrest-library;2.2 -org.hibernate.validator:hibernate-validator;6.2.5.Final -org.hibernate.validator:hibernate-validator-annotation-processor;6.2.5.Final -org.hibernate:hibernate-c3p0;5.6.15.Final -org.hibernate:hibernate-core;5.6.15.Final -org.hibernate:hibernate-ehcache;5.6.15.Final -org.hibernate:hibernate-entitymanager;5.6.15.Final -org.hibernate:hibernate-envers;5.6.15.Final -org.hibernate:hibernate-hikaricp;5.6.15.Final -org.hibernate:hibernate-java8;5.6.15.Final -org.hibernate:hibernate-jcache;5.6.15.Final -org.hibernate:hibernate-jpamodelgen;5.6.15.Final -org.hibernate:hibernate-micrometer;5.6.15.Final -org.hibernate:hibernate-proxool;5.6.15.Final -org.hibernate:hibernate-spatial;5.6.15.Final -org.hibernate:hibernate-testing;5.6.15.Final -org.hibernate:hibernate-vibur;5.6.15.Final -org.hsqldb:hsqldb;2.5.2 -org.infinispan.protostream:protostream;4.4.4.Final -org.infinispan.protostream:protostream-processor;4.4.4.Final -org.infinispan.protostream:protostream-types;4.4.4.Final -org.infinispan:infinispan-anchored-keys;13.0.20.Final -org.infinispan:infinispan-api;13.0.20.Final -org.infinispan:infinispan-bom;13.0.20.Final -org.infinispan:infinispan-cachestore-jdbc;13.0.20.Final -org.infinispan:infinispan-cachestore-jpa;13.0.20.Final -org.infinispan:infinispan-cachestore-remote;13.0.20.Final -org.infinispan:infinispan-cachestore-rocksdb;13.0.20.Final -org.infinispan:infinispan-cachestore-sql;13.0.20.Final -org.infinispan:infinispan-cdi-common;13.0.20.Final -org.infinispan:infinispan-cdi-embedded;13.0.20.Final -org.infinispan:infinispan-cdi-remote;13.0.20.Final -org.infinispan:infinispan-checkstyle;13.0.20.Final -org.infinispan:infinispan-cli-client;13.0.20.Final -org.infinispan:infinispan-client-hotrod;13.0.20.Final -org.infinispan:infinispan-client-rest;13.0.20.Final -org.infinispan:infinispan-cloudevents-integration;13.0.20.Final -org.infinispan:infinispan-clustered-counter;13.0.20.Final -org.infinispan:infinispan-clustered-lock;13.0.20.Final -org.infinispan:infinispan-commons;13.0.20.Final -org.infinispan:infinispan-commons-test;13.0.20.Final -org.infinispan:infinispan-component-annotations;13.0.20.Final -org.infinispan:infinispan-component-processor;13.0.20.Final -org.infinispan:infinispan-console;0.15.5.Final -org.infinispan:infinispan-core;13.0.20.Final -org.infinispan:infinispan-extended-statistics;13.0.20.Final -org.infinispan:infinispan-hibernate-cache-commons;13.0.20.Final -org.infinispan:infinispan-hibernate-cache-spi;13.0.20.Final -org.infinispan:infinispan-hibernate-cache-v53;13.0.20.Final -org.infinispan:infinispan-jboss-marshalling;13.0.20.Final -org.infinispan:infinispan-jcache;13.0.20.Final -org.infinispan:infinispan-jcache-commons;13.0.20.Final -org.infinispan:infinispan-jcache-remote;13.0.20.Final -org.infinispan:infinispan-key-value-store-client;13.0.20.Final -org.infinispan:infinispan-multimap;13.0.20.Final -org.infinispan:infinispan-objectfilter;13.0.20.Final -org.infinispan:infinispan-query;13.0.20.Final -org.infinispan:infinispan-query-core;13.0.20.Final -org.infinispan:infinispan-query-dsl;13.0.20.Final -org.infinispan:infinispan-remote-query-client;13.0.20.Final -org.infinispan:infinispan-remote-query-server;13.0.20.Final -org.infinispan:infinispan-scripting;13.0.20.Final -org.infinispan:infinispan-server-core;13.0.20.Final -org.infinispan:infinispan-server-hotrod;13.0.20.Final -org.infinispan:infinispan-server-memcached;13.0.20.Final -org.infinispan:infinispan-server-rest;13.0.20.Final -org.infinispan:infinispan-server-router;13.0.20.Final -org.infinispan:infinispan-server-runtime;13.0.20.Final -org.infinispan:infinispan-server-testdriver-core;13.0.20.Final -org.infinispan:infinispan-server-testdriver-junit4;13.0.20.Final -org.infinispan:infinispan-server-testdriver-junit5;13.0.20.Final -org.infinispan:infinispan-spring-boot-starter-embedded;13.0.20.Final -org.infinispan:infinispan-spring-boot-starter-remote;13.0.20.Final -org.infinispan:infinispan-spring5-common;13.0.20.Final -org.infinispan:infinispan-spring5-embedded;13.0.20.Final -org.infinispan:infinispan-spring5-remote;13.0.20.Final -org.infinispan:infinispan-tasks;13.0.20.Final -org.infinispan:infinispan-tasks-api;13.0.20.Final -org.infinispan:infinispan-tools;13.0.20.Final -org.influxdb:influxdb-java;2.22 -org.jboss.arquillian.junit:arquillian-junit-standalone;1.6.0.Final -org.jboss.logging:jboss-logging;3.4.3.Final -org.jdom:jdom2;2.0.6.1 -org.jetbrains.kotlin:kotlin-bom;1.6.21 -org.jetbrains.kotlin:kotlin-compiler;1.6.21 -org.jetbrains.kotlin:kotlin-compiler-embeddable;1.6.21 -org.jetbrains.kotlin:kotlin-daemon-client;1.6.21 -org.jetbrains.kotlin:kotlin-main-kts;1.6.21 -org.jetbrains.kotlin:kotlin-maven-plugin;1.6.21 -org.jetbrains.kotlin:kotlin-osgi-bundle;1.6.21 -org.jetbrains.kotlin:kotlin-reflect;1.6.21 -org.jetbrains.kotlin:kotlin-script-runtime;1.6.21 -org.jetbrains.kotlin:kotlin-script-util;1.6.21 -org.jetbrains.kotlin:kotlin-scripting-common;1.6.21 -org.jetbrains.kotlin:kotlin-scripting-ide-services;1.6.21 -org.jetbrains.kotlin:kotlin-scripting-jvm;1.6.21 -org.jetbrains.kotlin:kotlin-scripting-jvm-host;1.6.21 -org.jetbrains.kotlin:kotlin-stdlib;1.6.21 -org.jetbrains.kotlin:kotlin-stdlib-common;1.6.21 -org.jetbrains.kotlin:kotlin-stdlib-jdk7;1.6.21 -org.jetbrains.kotlin:kotlin-stdlib-jdk8;1.6.21 -org.jetbrains.kotlin:kotlin-stdlib-js;1.6.21 -org.jetbrains.kotlin:kotlin-test;1.6.21 -org.jetbrains.kotlin:kotlin-test-annotations-common;1.6.21 -org.jetbrains.kotlin:kotlin-test-common;1.6.21 -org.jetbrains.kotlin:kotlin-test-js;1.6.21 -org.jetbrains.kotlin:kotlin-test-junit;1.6.21 -org.jetbrains.kotlin:kotlin-test-junit5;1.6.21 -org.jetbrains.kotlin:kotlin-test-testng;1.6.21 -org.jetbrains.kotlinx:kotlinx-coroutines-android;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-bom;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-core;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-debug;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-guava;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-javafx;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-jdk8;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-jdk9;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-play-services;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-reactive;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-reactor;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-rx2;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-rx3;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-slf4j;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-swing;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-test;1.6.4 -org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm;1.6.4 -org.jolokia:jolokia-core;1.7.2 -org.jooq:jooq;3.14.16 -org.jooq:jooq-codegen;3.14.16 -org.jooq:jooq-codegen-maven;3.14.16 -org.jooq:jooq-kotlin;3.14.16 -org.jooq:jooq-meta;3.14.16 -org.junit.jupiter:junit-jupiter;5.8.2 -org.junit.jupiter:junit-jupiter-api;5.8.2 -org.junit.jupiter:junit-jupiter-engine;5.8.2 -org.junit.jupiter:junit-jupiter-migrationsupport;5.8.2 -org.junit.jupiter:junit-jupiter-params;5.8.2 -org.junit.platform:junit-platform-commons;1.8.2 -org.junit.platform:junit-platform-console;1.8.2 -org.junit.platform:junit-platform-engine;1.8.2 -org.junit.platform:junit-platform-jfr;1.8.2 -org.junit.platform:junit-platform-launcher;1.8.2 -org.junit.platform:junit-platform-reporting;1.8.2 -org.junit.platform:junit-platform-runner;1.8.2 -org.junit.platform:junit-platform-suite;1.8.2 -org.junit.platform:junit-platform-suite-api;1.8.2 -org.junit.platform:junit-platform-suite-commons;1.8.2 -org.junit.platform:junit-platform-suite-engine;1.8.2 -org.junit.platform:junit-platform-testkit;1.8.2 -org.junit.vintage:junit-vintage-engine;5.8.2 -org.junit:junit-bom;5.8.2 -org.liquibase:liquibase-cdi;4.9.1 -org.liquibase:liquibase-core;4.9.1 -org.liquibase:liquibase-maven-plugin;4.9.1 -org.mariadb.jdbc:mariadb-java-client;3.1.4 -org.mariadb:r2dbc-mariadb;1.1.2 -org.messaginghub:pooled-jms;1.2.6 -org.mockito:mockito-android;4.5.1 -org.mockito:mockito-bom;4.5.1 -org.mockito:mockito-core;4.5.1 -org.mockito:mockito-errorprone;4.5.1 -org.mockito:mockito-inline;4.5.1 -org.mockito:mockito-junit-jupiter;4.5.1 -org.mockito:mockito-proxy;4.5.1 -org.mongodb:bson;4.6.1 -org.mongodb:bson-record-codec;4.6.1 -org.mongodb:mongodb-driver-core;4.6.1 -org.mongodb:mongodb-driver-legacy;4.6.1 -org.mongodb:mongodb-driver-reactivestreams;4.6.1 -org.mongodb:mongodb-driver-sync;4.6.1 -org.mortbay.jasper:apache-el;9.0.52 -org.neo4j.driver:neo4j-java-driver;4.4.12 -org.postgresql:postgresql;42.3.8 -org.postgresql:r2dbc-postgresql;0.9.2.RELEASE -org.projectlombok:lombok;1.18.30 -org.quartz-scheduler:quartz;2.3.2 -org.quartz-scheduler:quartz-jobs;2.3.2 -org.reactivestreams:reactive-streams;1.0.4 -org.seleniumhq.selenium:htmlunit-driver;3.61.0 -org.seleniumhq.selenium:lift;4.1.4 -org.seleniumhq.selenium:selenium-api;4.1.4 -org.seleniumhq.selenium:selenium-chrome-driver;4.1.4 -org.seleniumhq.selenium:selenium-chromium-driver;4.1.4 -org.seleniumhq.selenium:selenium-devtools-v100;4.1.4 -org.seleniumhq.selenium:selenium-devtools-v101;4.1.4 -org.seleniumhq.selenium:selenium-devtools-v85;4.1.4 -org.seleniumhq.selenium:selenium-devtools-v99;4.1.4 -org.seleniumhq.selenium:selenium-edge-driver;4.1.4 -org.seleniumhq.selenium:selenium-firefox-driver;4.1.4 -org.seleniumhq.selenium:selenium-grid;4.1.4 -org.seleniumhq.selenium:selenium-http;4.1.4 -org.seleniumhq.selenium:selenium-ie-driver;4.1.4 -org.seleniumhq.selenium:selenium-java;4.1.4 -org.seleniumhq.selenium:selenium-json;4.1.4 -org.seleniumhq.selenium:selenium-opera-driver;4.1.4 -org.seleniumhq.selenium:selenium-remote-driver;4.1.4 -org.seleniumhq.selenium:selenium-safari-driver;4.1.4 -org.seleniumhq.selenium:selenium-session-map-jdbc;4.1.4 -org.seleniumhq.selenium:selenium-session-map-redis;4.1.4 -org.seleniumhq.selenium:selenium-support;4.1.4 -org.skyscreamer:jsonassert;1.5.1 -org.slf4j:jcl-over-slf4j;1.7.36 -org.slf4j:jul-to-slf4j;1.7.36 -org.slf4j:log4j-over-slf4j;1.7.36 -org.slf4j:slf4j-api;1.7.36 -org.slf4j:slf4j-ext;1.7.36 -org.slf4j:slf4j-jcl;1.7.36 -org.slf4j:slf4j-jdk14;1.7.36 -org.slf4j:slf4j-log4j12;1.7.36 -org.slf4j:slf4j-nop;1.7.36 -org.slf4j:slf4j-simple;1.7.36 -org.springframework.amqp:spring-amqp;2.4.17 -org.springframework.amqp:spring-rabbit;2.4.17 -org.springframework.amqp:spring-rabbit-junit;2.4.17 -org.springframework.amqp:spring-rabbit-stream;2.4.17 -org.springframework.amqp:spring-rabbit-test;2.4.17 -org.springframework.batch:spring-batch-core;4.3.10 -org.springframework.batch:spring-batch-infrastructure;4.3.10 -org.springframework.batch:spring-batch-integration;4.3.10 -org.springframework.batch:spring-batch-test;4.3.10 -org.springframework.boot:spring-boot;2.7.18 -org.springframework.boot:spring-boot-actuator;2.7.18 -org.springframework.boot:spring-boot-actuator-autoconfigure;2.7.18 -org.springframework.boot:spring-boot-autoconfigure;2.7.18 -org.springframework.boot:spring-boot-autoconfigure-processor;2.7.18 -org.springframework.boot:spring-boot-buildpack-platform;2.7.18 -org.springframework.boot:spring-boot-configuration-metadata;2.7.18 -org.springframework.boot:spring-boot-configuration-processor;2.7.18 -org.springframework.boot:spring-boot-dependencies;2.7.18 -org.springframework.boot:spring-boot-devtools;2.7.18 -org.springframework.boot:spring-boot-jarmode-layertools;2.7.18 -org.springframework.boot:spring-boot-loader;2.7.18 -org.springframework.boot:spring-boot-loader-tools;2.7.18 -org.springframework.boot:spring-boot-maven-plugin;2.7.18 -org.springframework.boot:spring-boot-properties-migrator;2.7.18 -org.springframework.boot:spring-boot-starter;2.7.18 -org.springframework.boot:spring-boot-starter-activemq;2.7.18 -org.springframework.boot:spring-boot-starter-actuator;2.7.18 -org.springframework.boot:spring-boot-starter-amqp;2.7.18 -org.springframework.boot:spring-boot-starter-aop;2.7.18 -org.springframework.boot:spring-boot-starter-artemis;2.7.18 -org.springframework.boot:spring-boot-starter-batch;2.7.18 -org.springframework.boot:spring-boot-starter-cache;2.7.18 -org.springframework.boot:spring-boot-starter-data-cassandra;2.7.18 -org.springframework.boot:spring-boot-starter-data-cassandra-reactive;2.7.18 -org.springframework.boot:spring-boot-starter-data-couchbase;2.7.18 -org.springframework.boot:spring-boot-starter-data-couchbase-reactive;2.7.18 -org.springframework.boot:spring-boot-starter-data-elasticsearch;2.7.18 -org.springframework.boot:spring-boot-starter-data-jdbc;2.7.18 -org.springframework.boot:spring-boot-starter-data-jpa;2.7.18 -org.springframework.boot:spring-boot-starter-data-ldap;2.7.18 -org.springframework.boot:spring-boot-starter-data-mongodb;2.7.18 -org.springframework.boot:spring-boot-starter-data-mongodb-reactive;2.7.18 -org.springframework.boot:spring-boot-starter-data-neo4j;2.7.18 -org.springframework.boot:spring-boot-starter-data-r2dbc;2.7.18 -org.springframework.boot:spring-boot-starter-data-redis;2.7.18 -org.springframework.boot:spring-boot-starter-data-redis-reactive;2.7.18 -org.springframework.boot:spring-boot-starter-data-rest;2.7.18 -org.springframework.boot:spring-boot-starter-freemarker;2.7.18 -org.springframework.boot:spring-boot-starter-graphql;2.7.18 -org.springframework.boot:spring-boot-starter-groovy-templates;2.7.18 -org.springframework.boot:spring-boot-starter-hateoas;2.7.18 -org.springframework.boot:spring-boot-starter-integration;2.7.18 -org.springframework.boot:spring-boot-starter-jdbc;2.7.18 -org.springframework.boot:spring-boot-starter-jersey;2.7.18 -org.springframework.boot:spring-boot-starter-jetty;2.7.18 -org.springframework.boot:spring-boot-starter-jooq;2.7.18 -org.springframework.boot:spring-boot-starter-json;2.7.18 -org.springframework.boot:spring-boot-starter-jta-atomikos;2.7.18 -org.springframework.boot:spring-boot-starter-log4j2;2.7.18 -org.springframework.boot:spring-boot-starter-logging;2.7.18 -org.springframework.boot:spring-boot-starter-mail;2.7.18 -org.springframework.boot:spring-boot-starter-mustache;2.7.18 -org.springframework.boot:spring-boot-starter-oauth2-client;2.7.18 -org.springframework.boot:spring-boot-starter-oauth2-resource-server;2.7.18 -org.springframework.boot:spring-boot-starter-parent;2.7.18 -org.springframework.boot:spring-boot-starter-quartz;2.7.18 -org.springframework.boot:spring-boot-starter-reactor-netty;2.7.18 -org.springframework.boot:spring-boot-starter-rsocket;2.7.18 -org.springframework.boot:spring-boot-starter-security;2.7.18 -org.springframework.boot:spring-boot-starter-test;2.7.18 -org.springframework.boot:spring-boot-starter-thymeleaf;2.7.18 -org.springframework.boot:spring-boot-starter-tomcat;2.7.18 -org.springframework.boot:spring-boot-starter-undertow;2.7.18 -org.springframework.boot:spring-boot-starter-validation;2.7.18 -org.springframework.boot:spring-boot-starter-web;2.7.18 -org.springframework.boot:spring-boot-starter-web-services;2.7.18 -org.springframework.boot:spring-boot-starter-webflux;2.7.18 -org.springframework.boot:spring-boot-starter-websocket;2.7.18 -org.springframework.boot:spring-boot-test;2.7.18 -org.springframework.boot:spring-boot-test-autoconfigure;2.7.18 -org.springframework.cloud:spring-cloud-bus;3.1.3 -org.springframework.cloud:spring-cloud-bus-dependencies;3.1.3 -org.springframework.cloud:spring-cloud-bus-rsocket;3.1.3 -org.springframework.cloud:spring-cloud-circuitbreaker-dependencies;2.1.8 -org.springframework.cloud:spring-cloud-circuitbreaker-resilience4j;2.1.8 -org.springframework.cloud:spring-cloud-circuitbreaker-spring-retry;2.1.8 -org.springframework.cloud:spring-cloud-cloudfoundry-commons;3.1.4 -org.springframework.cloud:spring-cloud-cloudfoundry-dependencies;3.1.4 -org.springframework.cloud:spring-cloud-cloudfoundry-discovery;3.1.4 -org.springframework.cloud:spring-cloud-cloudfoundry-web;3.1.4 -org.springframework.cloud:spring-cloud-commons;3.1.8 -org.springframework.cloud:spring-cloud-commons-dependencies;3.1.8 -org.springframework.cloud:spring-cloud-config-client;3.1.9 -org.springframework.cloud:spring-cloud-config-dependencies;3.1.9 -org.springframework.cloud:spring-cloud-config-monitor;3.1.9 -org.springframework.cloud:spring-cloud-config-server;3.1.9 -org.springframework.cloud:spring-cloud-consul-binder;3.1.5 -org.springframework.cloud:spring-cloud-consul-config;3.1.5 -org.springframework.cloud:spring-cloud-consul-core;3.1.5 -org.springframework.cloud:spring-cloud-consul-dependencies;3.1.5 -org.springframework.cloud:spring-cloud-consul-discovery;3.1.5 -org.springframework.cloud:spring-cloud-context;3.1.8 -org.springframework.cloud:spring-cloud-contract-converters;3.1.9 -org.springframework.cloud:spring-cloud-contract-dependencies;3.1.9 -org.springframework.cloud:spring-cloud-contract-gradle-plugin;3.1.9 -org.springframework.cloud:spring-cloud-contract-maven-plugin;3.1.9 -org.springframework.cloud:spring-cloud-contract-pact;3.1.9 -org.springframework.cloud:spring-cloud-contract-shade;3.1.9 -org.springframework.cloud:spring-cloud-contract-spec;3.1.9 -org.springframework.cloud:spring-cloud-contract-spec-groovy;3.1.9 -org.springframework.cloud:spring-cloud-contract-spec-java;3.1.9 -org.springframework.cloud:spring-cloud-contract-spec-kotlin;3.1.9 -org.springframework.cloud:spring-cloud-contract-stub-runner;3.1.9 -org.springframework.cloud:spring-cloud-contract-stub-runner-boot;3.1.9 -org.springframework.cloud:spring-cloud-contract-verifier;3.1.9 -org.springframework.cloud:spring-cloud-contract-wiremock;3.1.9 -org.springframework.cloud:spring-cloud-dependencies;2021.0.9 -org.springframework.cloud:spring-cloud-function-adapter-aws;3.2.12 -org.springframework.cloud:spring-cloud-function-adapter-azure;3.2.12 -org.springframework.cloud:spring-cloud-function-adapter-gcp;3.2.12 -org.springframework.cloud:spring-cloud-function-adapter-openwhisk;3.2.12 -org.springframework.cloud:spring-cloud-function-context;3.2.12 -org.springframework.cloud:spring-cloud-function-core;3.2.12 -org.springframework.cloud:spring-cloud-function-dependencies;3.2.12 -org.springframework.cloud:spring-cloud-function-deployer;3.2.12 -org.springframework.cloud:spring-cloud-function-grpc;3.2.12 -org.springframework.cloud:spring-cloud-function-grpc-cloudevent-ext;3.2.12 -org.springframework.cloud:spring-cloud-function-kotlin;3.2.12 -org.springframework.cloud:spring-cloud-function-rsocket;3.2.12 -org.springframework.cloud:spring-cloud-function-web;3.2.12 -org.springframework.cloud:spring-cloud-gateway-dependencies;3.1.9 -org.springframework.cloud:spring-cloud-gateway-mvc;3.1.9 -org.springframework.cloud:spring-cloud-gateway-server;3.1.9 -org.springframework.cloud:spring-cloud-gateway-webflux;3.1.9 -org.springframework.cloud:spring-cloud-kubernetes-client-autoconfig;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-client-config;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-client-discovery;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-client-loadbalancer;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-commons;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-dependencies;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-discovery;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-autoconfig;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-config;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-discovery;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-istio;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-leader;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-fabric8-loadbalancer;2.1.9 -org.springframework.cloud:spring-cloud-kubernetes-test-support;2.1.9 -org.springframework.cloud:spring-cloud-loadbalancer;3.1.8 -org.springframework.cloud:spring-cloud-netflix-dependencies;3.1.8 -org.springframework.cloud:spring-cloud-netflix-eureka-client;3.1.8 -org.springframework.cloud:spring-cloud-netflix-eureka-server;3.1.8 -org.springframework.cloud:spring-cloud-openfeign-core;3.1.9 -org.springframework.cloud:spring-cloud-openfeign-dependencies;3.1.9 -org.springframework.cloud:spring-cloud-sleuth-api;3.1.10 -org.springframework.cloud:spring-cloud-sleuth-autoconfigure;3.1.10 -org.springframework.cloud:spring-cloud-sleuth-brave;3.1.10 -org.springframework.cloud:spring-cloud-sleuth-dependencies;3.1.10 -org.springframework.cloud:spring-cloud-sleuth-instrumentation;3.1.10 -org.springframework.cloud:spring-cloud-sleuth-tests-common;3.1.10 -org.springframework.cloud:spring-cloud-sleuth-zipkin;3.1.10 -org.springframework.cloud:spring-cloud-starter;3.1.8 -org.springframework.cloud:spring-cloud-starter-bootstrap;3.1.8 -org.springframework.cloud:spring-cloud-starter-bus-amqp;3.1.3 -org.springframework.cloud:spring-cloud-starter-bus-kafka;3.1.3 -org.springframework.cloud:spring-cloud-starter-bus-stream;3.1.3 -org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j;2.1.8 -org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j;2.1.8 -org.springframework.cloud:spring-cloud-starter-cloudfoundry;3.1.4 -org.springframework.cloud:spring-cloud-starter-config;3.1.9 -org.springframework.cloud:spring-cloud-starter-consul;3.1.5 -org.springframework.cloud:spring-cloud-starter-consul-all;3.1.5 -org.springframework.cloud:spring-cloud-starter-consul-bus;3.1.5 -org.springframework.cloud:spring-cloud-starter-consul-config;3.1.5 -org.springframework.cloud:spring-cloud-starter-consul-discovery;3.1.5 -org.springframework.cloud:spring-cloud-starter-contract-stub-runner;3.1.9 -org.springframework.cloud:spring-cloud-starter-contract-stub-runner-jetty;3.1.9 -org.springframework.cloud:spring-cloud-starter-contract-verifier;3.1.9 -org.springframework.cloud:spring-cloud-starter-function-web;3.2.12 -org.springframework.cloud:spring-cloud-starter-function-webflux;3.2.12 -org.springframework.cloud:spring-cloud-starter-gateway;3.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-client;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-client-all;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-client-config;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-client-loadbalancer;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-discoveryclient;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-all;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-config;2.1.9 -org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-loadbalancer;2.1.9 -org.springframework.cloud:spring-cloud-starter-loadbalancer;3.1.8 -org.springframework.cloud:spring-cloud-starter-netflix-eureka-client;3.1.8 -org.springframework.cloud:spring-cloud-starter-netflix-eureka-server;3.1.8 -org.springframework.cloud:spring-cloud-starter-openfeign;3.1.9 -org.springframework.cloud:spring-cloud-starter-sleuth;3.1.10 -org.springframework.cloud:spring-cloud-starter-stream-kafka;3.2.10 -org.springframework.cloud:spring-cloud-starter-stream-rabbit;3.2.10 -org.springframework.cloud:spring-cloud-starter-task;2.4.6 -org.springframework.cloud:spring-cloud-starter-vault-config;3.1.4 -org.springframework.cloud:spring-cloud-starter-zookeeper;3.1.5 -org.springframework.cloud:spring-cloud-starter-zookeeper-all;3.1.5 -org.springframework.cloud:spring-cloud-starter-zookeeper-config;3.1.5 -org.springframework.cloud:spring-cloud-starter-zookeeper-discovery;3.1.5 -org.springframework.cloud:spring-cloud-stream;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-kafka;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-kafka-core;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-kafka-streams;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-rabbit;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-rabbit-core;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-rabbit-test-support;3.2.10 -org.springframework.cloud:spring-cloud-stream-binder-test;3.2.10 -org.springframework.cloud:spring-cloud-stream-dependencies;3.2.10 -org.springframework.cloud:spring-cloud-stream-test-support;3.2.10 -org.springframework.cloud:spring-cloud-task-batch;2.4.6 -org.springframework.cloud:spring-cloud-task-core;2.4.6 -org.springframework.cloud:spring-cloud-task-dependencies;2.4.6 -org.springframework.cloud:spring-cloud-task-stream;2.4.6 -org.springframework.cloud:spring-cloud-test-support;3.1.8 -org.springframework.cloud:spring-cloud-vault-config;3.1.4 -org.springframework.cloud:spring-cloud-vault-config-aws;3.1.4 -org.springframework.cloud:spring-cloud-vault-config-consul;3.1.4 -org.springframework.cloud:spring-cloud-vault-config-databases;3.1.4 -org.springframework.cloud:spring-cloud-vault-config-rabbitmq;3.1.4 -org.springframework.cloud:spring-cloud-vault-dependencies;3.1.4 -org.springframework.cloud:spring-cloud-zookeeper-config;3.1.5 -org.springframework.cloud:spring-cloud-zookeeper-core;3.1.5 -org.springframework.cloud:spring-cloud-zookeeper-dependencies;3.1.5 -org.springframework.cloud:spring-cloud-zookeeper-discovery;3.1.5 -org.springframework.credhub:spring-credhub-core;2.1.1.RELEASE -org.springframework.data:spring-data-bom;2021.2.18 -org.springframework.data:spring-data-cassandra;3.4.18 -org.springframework.data:spring-data-commons;2.7.18 -org.springframework.data:spring-data-couchbase;4.4.18 -org.springframework.data:spring-data-elasticsearch;4.4.18 -org.springframework.data:spring-data-envers;2.7.18 -org.springframework.data:spring-data-geode;2.7.18 -org.springframework.data:spring-data-jdbc;2.4.18 -org.springframework.data:spring-data-jpa;2.7.18 -org.springframework.data:spring-data-keyvalue;2.7.18 -org.springframework.data:spring-data-ldap;2.7.18 -org.springframework.data:spring-data-mongodb;3.4.18 -org.springframework.data:spring-data-neo4j;6.3.18 -org.springframework.data:spring-data-r2dbc;1.5.18 -org.springframework.data:spring-data-redis;2.7.18 -org.springframework.data:spring-data-relational;2.4.18 -org.springframework.data:spring-data-rest-core;3.7.18 -org.springframework.data:spring-data-rest-hal-explorer;3.7.18 -org.springframework.data:spring-data-rest-webmvc;3.7.18 -org.springframework.graphql:spring-graphql;1.0.6 -org.springframework.graphql:spring-graphql-test;1.0.6 -org.springframework.hateoas:spring-hateoas;1.5.6 -org.springframework.integration:spring-integration-amqp;5.5.20 -org.springframework.integration:spring-integration-bom;5.5.20 -org.springframework.integration:spring-integration-core;5.5.20 -org.springframework.integration:spring-integration-event;5.5.20 -org.springframework.integration:spring-integration-feed;5.5.20 -org.springframework.integration:spring-integration-file;5.5.20 -org.springframework.integration:spring-integration-ftp;5.5.20 -org.springframework.integration:spring-integration-gemfire;5.5.20 -org.springframework.integration:spring-integration-groovy;5.5.20 -org.springframework.integration:spring-integration-http;5.5.20 -org.springframework.integration:spring-integration-ip;5.5.20 -org.springframework.integration:spring-integration-jdbc;5.5.20 -org.springframework.integration:spring-integration-jms;5.5.20 -org.springframework.integration:spring-integration-jmx;5.5.20 -org.springframework.integration:spring-integration-jpa;5.5.20 -org.springframework.integration:spring-integration-kafka;5.5.20 -org.springframework.integration:spring-integration-mail;5.5.20 -org.springframework.integration:spring-integration-mongodb;5.5.20 -org.springframework.integration:spring-integration-mqtt;5.5.20 -org.springframework.integration:spring-integration-r2dbc;5.5.20 -org.springframework.integration:spring-integration-redis;5.5.20 -org.springframework.integration:spring-integration-rmi;5.5.20 -org.springframework.integration:spring-integration-rsocket;5.5.20 -org.springframework.integration:spring-integration-scripting;5.5.20 -org.springframework.integration:spring-integration-security;5.5.20 -org.springframework.integration:spring-integration-sftp;5.5.20 -org.springframework.integration:spring-integration-stomp;5.5.20 -org.springframework.integration:spring-integration-stream;5.5.20 -org.springframework.integration:spring-integration-syslog;5.5.20 -org.springframework.integration:spring-integration-test;5.5.20 -org.springframework.integration:spring-integration-test-support;5.5.20 -org.springframework.integration:spring-integration-webflux;5.5.20 -org.springframework.integration:spring-integration-websocket;5.5.20 -org.springframework.integration:spring-integration-ws;5.5.20 -org.springframework.integration:spring-integration-xml;5.5.20 -org.springframework.integration:spring-integration-xmpp;5.5.20 -org.springframework.integration:spring-integration-zeromq;5.5.20 -org.springframework.integration:spring-integration-zookeeper;5.5.20 -org.springframework.kafka:spring-kafka;2.8.11 -org.springframework.kafka:spring-kafka-test;2.8.11 -org.springframework.ldap:spring-ldap-core;2.4.1 -org.springframework.ldap:spring-ldap-core-tiger;2.4.1 -org.springframework.ldap:spring-ldap-ldif-core;2.4.1 -org.springframework.ldap:spring-ldap-odm;2.4.1 -org.springframework.ldap:spring-ldap-test;2.4.1 -org.springframework.restdocs:spring-restdocs-asciidoctor;2.0.8.RELEASE -org.springframework.restdocs:spring-restdocs-core;2.0.8.RELEASE -org.springframework.restdocs:spring-restdocs-mockmvc;2.0.8.RELEASE -org.springframework.restdocs:spring-restdocs-restassured;2.0.8.RELEASE -org.springframework.restdocs:spring-restdocs-webtestclient;2.0.8.RELEASE -org.springframework.retry:spring-retry;1.3.4 -org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure;2.5.2 -org.springframework.security:spring-security-acl;5.7.11 -org.springframework.security:spring-security-aspects;5.7.11 -org.springframework.security:spring-security-bom;5.7.11 -org.springframework.security:spring-security-cas;5.7.11 -org.springframework.security:spring-security-config;5.7.11 -org.springframework.security:spring-security-core;5.7.11 -org.springframework.security:spring-security-crypto;5.7.11 -org.springframework.security:spring-security-data;5.7.11 -org.springframework.security:spring-security-ldap;5.7.11 -org.springframework.security:spring-security-messaging;5.7.11 -org.springframework.security:spring-security-oauth2-client;5.7.11 -org.springframework.security:spring-security-oauth2-core;5.7.11 -org.springframework.security:spring-security-oauth2-jose;5.7.11 -org.springframework.security:spring-security-oauth2-resource-server;5.7.11 -org.springframework.security:spring-security-openid;5.7.11 -org.springframework.security:spring-security-remoting;5.7.11 -org.springframework.security:spring-security-rsa;1.0.12.RELEASE -org.springframework.security:spring-security-rsocket;5.7.11 -org.springframework.security:spring-security-saml2-service-provider;5.7.11 -org.springframework.security:spring-security-taglibs;5.7.11 -org.springframework.security:spring-security-test;5.7.11 -org.springframework.security:spring-security-web;5.7.11 -org.springframework.session:spring-session-bom;2021.2.3 -org.springframework.session:spring-session-core;2.7.4 -org.springframework.session:spring-session-data-geode;2.7.1 -org.springframework.session:spring-session-data-mongodb;2.7.4 -org.springframework.session:spring-session-data-redis;2.7.4 -org.springframework.session:spring-session-hazelcast;2.7.4 -org.springframework.session:spring-session-jdbc;2.7.4 -org.springframework.vault:spring-vault-core;2.3.2 -org.springframework.ws:spring-ws-core;3.1.8 -org.springframework.ws:spring-ws-security;3.1.8 -org.springframework.ws:spring-ws-support;3.1.8 -org.springframework.ws:spring-ws-test;3.1.8 -org.springframework.ws:spring-xml;3.1.8 -org.springframework:spring-aop;5.3.32 -org.springframework:spring-aspects;5.3.32 -org.springframework:spring-beans;5.3.32 -org.springframework:spring-context;5.3.32 -org.springframework:spring-context-indexer;5.3.32 -org.springframework:spring-context-support;5.3.32 -org.springframework:spring-core;5.3.32 -org.springframework:spring-expression;5.3.32 -org.springframework:spring-framework-bom;5.3.32 -org.springframework:spring-instrument;5.3.32 -org.springframework:spring-jcl;5.3.32 -org.springframework:spring-jdbc;5.3.32 -org.springframework:spring-jms;5.3.32 -org.springframework:spring-messaging;5.3.32 -org.springframework:spring-orm;5.3.32 -org.springframework:spring-oxm;5.3.32 -org.springframework:spring-r2dbc;5.3.32 -org.springframework:spring-test;5.3.32 -org.springframework:spring-tx;5.3.32 -org.springframework:spring-web;5.3.32 -org.springframework:spring-webflux;5.3.32 -org.springframework:spring-webmvc;5.3.32 -org.springframework:spring-websocket;5.3.32 -org.thymeleaf.extras:thymeleaf-extras-java8time;3.0.4.RELEASE -org.thymeleaf.extras:thymeleaf-extras-springsecurity5;3.0.5.RELEASE -org.thymeleaf:thymeleaf;3.0.15.RELEASE -org.thymeleaf:thymeleaf-spring5;3.0.15.RELEASE -org.tmatesoft.svnkit:svnkit;1.10.1 -org.webjars:webjars-locator-core;0.50 -org.xerial:sqlite-jdbc;3.36.0.3 -org.xmlunit:xmlunit-assertj;2.9.1 -org.xmlunit:xmlunit-assertj3;2.9.1 -org.xmlunit:xmlunit-core;2.9.1 -org.xmlunit:xmlunit-legacy;2.9.1 -org.xmlunit:xmlunit-matchers;2.9.1 -org.xmlunit:xmlunit-placeholders;2.9.1 -org.yaml:snakeyaml;1.30 -pl.project13.maven:git-commit-id-plugin;4.9.10 -redis.clients:jedis;3.8.0 -wsdl4j:wsdl4j;1.6.3 diff --git a/sdk/spring/scripts/spring_boot_3.3.0_managed_external_dependencies.txt b/sdk/spring/scripts/spring_boot_3.3.0_managed_external_dependencies.txt new file mode 100644 index 000000000000..7d6b3f415e90 --- /dev/null +++ b/sdk/spring/scripts/spring_boot_3.3.0_managed_external_dependencies.txt @@ -0,0 +1,1889 @@ +ch.qos.logback:logback-classic;1.5.6 +ch.qos.logback:logback-core;1.5.6 +co.elastic.clients:elasticsearch-java;8.13.4 +com.couchbase.client:java-client;3.6.2 +com.datastax.oss:java-driver-shaded-guava;25.1-jre-graal-sub-1 +com.datastax.oss:native-protocol;1.5.1 +com.ecwid.consul:consul-api;1.4.5 +com.fasterxml.jackson.core:jackson-annotations;2.17.1 +com.fasterxml.jackson.core:jackson-core;2.17.1 +com.fasterxml.jackson.core:jackson-databind;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-avro;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-cbor;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-csv;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-ion;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-properties;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-protobuf;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-smile;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-toml;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.17.1 +com.fasterxml.jackson.dataformat:jackson-dataformat-yaml;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-eclipse-collections;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-guava;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate4;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate5;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-hibernate6;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-hppc;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jaxrs;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-joda;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-joda-money;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-json-org;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-jsr353;2.17.1 +com.fasterxml.jackson.datatype:jackson-datatype-pcollections;2.17.1 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-base;2.17.1 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-cbor-provider;2.17.1 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider;2.17.1 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-smile-provider;2.17.1 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-xml-provider;2.17.1 +com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-yaml-provider;2.17.1 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-base;2.17.1 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-cbor-provider;2.17.1 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider;2.17.1 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-smile-provider;2.17.1 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-xml-provider;2.17.1 +com.fasterxml.jackson.jaxrs:jackson-jaxrs-yaml-provider;2.17.1 +com.fasterxml.jackson.jr:jackson-jr-all;2.17.1 +com.fasterxml.jackson.jr:jackson-jr-annotation-support;2.17.1 +com.fasterxml.jackson.jr:jackson-jr-extension-javatime;2.17.1 +com.fasterxml.jackson.jr:jackson-jr-objects;2.17.1 +com.fasterxml.jackson.jr:jackson-jr-retrofit2;2.17.1 +com.fasterxml.jackson.jr:jackson-jr-stree;2.17.1 +com.fasterxml.jackson.module:jackson-module-afterburner;2.17.1 +com.fasterxml.jackson.module:jackson-module-android-record;2.17.1 +com.fasterxml.jackson.module:jackson-module-blackbird;2.17.1 +com.fasterxml.jackson.module:jackson-module-guice;2.17.1 +com.fasterxml.jackson.module:jackson-module-guice7;2.17.1 +com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations;2.17.1 +com.fasterxml.jackson.module:jackson-module-jaxb-annotations;2.17.1 +com.fasterxml.jackson.module:jackson-module-jsonSchema;2.17.1 +com.fasterxml.jackson.module:jackson-module-jsonSchema-jakarta;2.17.1 +com.fasterxml.jackson.module:jackson-module-kotlin;2.17.1 +com.fasterxml.jackson.module:jackson-module-mrbean;2.17.1 +com.fasterxml.jackson.module:jackson-module-no-ctor-deser;2.17.1 +com.fasterxml.jackson.module:jackson-module-osgi;2.17.1 +com.fasterxml.jackson.module:jackson-module-parameter-names;2.17.1 +com.fasterxml.jackson.module:jackson-module-paranamer;2.17.1 +com.fasterxml.jackson.module:jackson-module-scala_2.11;2.17.1 +com.fasterxml.jackson.module:jackson-module-scala_2.12;2.17.1 +com.fasterxml.jackson.module:jackson-module-scala_2.13;2.17.1 +com.fasterxml.jackson.module:jackson-module-scala_3;2.17.1 +com.fasterxml.jackson:jackson-bom;2.17.1 +com.fasterxml:classmate;1.7.0 +com.github.ben-manes.caffeine:caffeine;3.1.8 +com.github.ben-manes.caffeine:guava;3.1.8 +com.github.ben-manes.caffeine:jcache;3.1.8 +com.github.ben-manes.caffeine:simulator;3.1.8 +com.github.mxab.thymeleaf.extras:thymeleaf-extras-data-attribute;2.0.1 +com.github.tomakehurst:wiremock-jre8-standalone;2.35.1 +com.google.code.gson:gson;2.10.1 +com.graphql-java:graphql-java;22.0 +com.h2database:h2;2.2.224 +com.hazelcast:hazelcast;5.4.0 +com.hazelcast:hazelcast-spring;5.4.0 +com.ibm.db2:jcc;11.5.9.0 +com.jayway.jsonpath:json-path;2.9.0 +com.jayway.jsonpath:json-path-assert;2.9.0 +com.microsoft.sqlserver:mssql-jdbc;12.6.1.jre11 +com.mysql:mysql-connector-j;8.3.0 +com.netflix.eureka:eureka-client;2.0.2 +com.netflix.eureka:eureka-client-jersey3;2.0.2 +com.netflix.eureka:eureka-core;2.0.2 +com.netflix.eureka:eureka-core-jersey3;2.0.2 +com.oracle.database.ha:ons;21.9.0.0 +com.oracle.database.ha:simplefan;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc11-debug;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc11-observability-debug;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc11_g;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc11dms_g;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc8-debug;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc8-observability-debug;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc8_g;21.9.0.0 +com.oracle.database.jdbc.debug:ojdbc8dms_g;21.9.0.0 +com.oracle.database.jdbc:ojdbc11;21.9.0.0 +com.oracle.database.jdbc:ojdbc11-production;21.9.0.0 +com.oracle.database.jdbc:ojdbc8;21.9.0.0 +com.oracle.database.jdbc:ojdbc8-production;21.9.0.0 +com.oracle.database.jdbc:rsi;21.9.0.0 +com.oracle.database.jdbc:ucp;21.9.0.0 +com.oracle.database.jdbc:ucp11;21.9.0.0 +com.oracle.database.nls:orai18n;21.9.0.0 +com.oracle.database.observability:dms;21.9.0.0 +com.oracle.database.observability:ojdbc11-observability;21.9.0.0 +com.oracle.database.observability:ojdbc11dms;21.9.0.0 +com.oracle.database.observability:ojdbc8-observability;21.9.0.0 +com.oracle.database.observability:ojdbc8dms;21.9.0.0 +com.oracle.database.r2dbc:oracle-r2dbc;1.2.0 +com.oracle.database.security:oraclepki;21.9.0.0 +com.oracle.database.security:osdt_cert;21.9.0.0 +com.oracle.database.security:osdt_core;21.9.0.0 +com.oracle.database.xml:xdb;21.9.0.0 +com.oracle.database.xml:xmlparserv2;21.9.0.0 +com.querydsl:codegen-utils;5.1.0 +com.querydsl:querydsl-apt;5.1.0 +com.querydsl:querydsl-bom;5.1.0 +com.querydsl:querydsl-codegen;5.1.0 +com.querydsl:querydsl-collections;5.1.0 +com.querydsl:querydsl-core;5.1.0 +com.querydsl:querydsl-guava;5.1.0 +com.querydsl:querydsl-hibernate-search;5.1.0 +com.querydsl:querydsl-jdo;5.1.0 +com.querydsl:querydsl-jpa;5.1.0 +com.querydsl:querydsl-jpa-codegen;5.1.0 +com.querydsl:querydsl-kotlin;5.1.0 +com.querydsl:querydsl-kotlin-codegen;5.1.0 +com.querydsl:querydsl-lucene3;5.1.0 +com.querydsl:querydsl-lucene4;5.1.0 +com.querydsl:querydsl-lucene5;5.1.0 +com.querydsl:querydsl-mongodb;5.1.0 +com.querydsl:querydsl-scala;5.1.0 +com.querydsl:querydsl-spatial;5.1.0 +com.querydsl:querydsl-sql;5.1.0 +com.querydsl:querydsl-sql-codegen;5.1.0 +com.querydsl:querydsl-sql-spatial;5.1.0 +com.querydsl:querydsl-sql-spring;5.1.0 +com.rabbitmq:amqp-client;5.21.0 +com.rabbitmq:stream-client;0.15.0 +com.samskivert:jmustache;1.16 +com.sendgrid:sendgrid-java;4.10.2 +com.squareup.okhttp3:logging-interceptor;4.12.0 +com.squareup.okhttp3:mockwebserver;4.12.0 +com.squareup.okhttp3:okcurl;4.12.0 +com.squareup.okhttp3:okhttp;4.12.0 +com.squareup.okhttp3:okhttp-bom;4.12.0 +com.squareup.okhttp3:okhttp-brotli;4.12.0 +com.squareup.okhttp3:okhttp-dnsoverhttps;4.12.0 +com.squareup.okhttp3:okhttp-sse;4.12.0 +com.squareup.okhttp3:okhttp-tls;4.12.0 +com.squareup.okhttp3:okhttp-urlconnection;4.12.0 +com.sun.istack:istack-commons-runtime;4.1.2 +com.sun.xml.bind:jaxb-core;4.0.5 +com.sun.xml.bind:jaxb-impl;4.0.5 +com.sun.xml.bind:jaxb-jxc;4.0.5 +com.sun.xml.bind:jaxb-osgi;4.0.5 +com.sun.xml.bind:jaxb-xjc;4.0.5 +com.sun.xml.fastinfoset:FastInfoset;2.1.1 +com.sun.xml.messaging.saaj:saaj-impl;3.0.4 +com.toomuchcoding.jsonassert:jsonassert;0.8.0 +com.toomuchcoding.jsonassert:jsonassert-shade;0.8.0 +com.unboundid:unboundid-ldapsdk;6.0.11 +com.zaxxer:HikariCP;5.1.0 +commons-codec:commons-codec;1.16.1 +commons-fileupload:commons-fileupload;1.5 +commons-pool:commons-pool;1.6 +io.asyncer:r2dbc-mysql;1.1.3 +io.fabric8.java-generator:io.fabric8.java-generator.gradle.plugin;6.9.2 +io.fabric8.kubernetes:kubernetes-karaf;6.9.2 +io.fabric8.kubernetes:kubernetes-karaf-itests;6.9.2 +io.fabric8:certmanager-client;6.9.2 +io.fabric8:certmanager-examples;6.9.2 +io.fabric8:certmanager-model-v1;6.9.2 +io.fabric8:certmanager-model-v1alpha2;6.9.2 +io.fabric8:certmanager-model-v1alpha3;6.9.2 +io.fabric8:certmanager-model-v1beta1;6.9.2 +io.fabric8:certmanager-tests;6.9.2 +io.fabric8:chaosmesh-client;6.9.2 +io.fabric8:chaosmesh-examples;6.9.2 +io.fabric8:chaosmesh-model;6.9.2 +io.fabric8:chaosmesh-tests;6.9.2 +io.fabric8:crd-generator-api;6.9.2 +io.fabric8:crd-generator-apt;6.9.2 +io.fabric8:crd-generator-test;6.9.2 +io.fabric8:generator-annotations;6.9.2 +io.fabric8:istio-client;6.9.2 +io.fabric8:istio-examples;6.9.2 +io.fabric8:istio-model-v1alpha3;6.9.2 +io.fabric8:istio-model-v1beta1;6.9.2 +io.fabric8:istio-tests;6.9.2 +io.fabric8:java-generator-benchmark;6.9.2 +io.fabric8:java-generator-cli;6.9.2 +io.fabric8:java-generator-core;6.9.2 +io.fabric8:java-generator-integration-tests;6.9.2 +io.fabric8:java-generator-maven-plugin;6.9.2 +io.fabric8:knative-client;6.9.2 +io.fabric8:knative-examples;6.9.2 +io.fabric8:knative-model;6.9.2 +io.fabric8:knative-tests;6.9.2 +io.fabric8:kubernetes-client;6.9.2 +io.fabric8:kubernetes-client-api;6.9.2 +io.fabric8:kubernetes-client-bom;6.9.2 +io.fabric8:kubernetes-examples;6.9.2 +io.fabric8:kubernetes-httpclient-jdk;6.9.2 +io.fabric8:kubernetes-httpclient-jetty;6.9.2 +io.fabric8:kubernetes-httpclient-okhttp;6.9.2 +io.fabric8:kubernetes-httpclient-tests;6.9.2 +io.fabric8:kubernetes-httpclient-vertx;6.9.2 +io.fabric8:kubernetes-junit-jupiter;6.9.2 +io.fabric8:kubernetes-junit-jupiter-autodetected;6.9.2 +io.fabric8:kubernetes-model;6.9.2 +io.fabric8:kubernetes-model-admissionregistration;6.9.2 +io.fabric8:kubernetes-model-apiextensions;6.9.2 +io.fabric8:kubernetes-model-apps;6.9.2 +io.fabric8:kubernetes-model-autoscaling;6.9.2 +io.fabric8:kubernetes-model-batch;6.9.2 +io.fabric8:kubernetes-model-certificates;6.9.2 +io.fabric8:kubernetes-model-common;6.9.2 +io.fabric8:kubernetes-model-coordination;6.9.2 +io.fabric8:kubernetes-model-core;6.9.2 +io.fabric8:kubernetes-model-discovery;6.9.2 +io.fabric8:kubernetes-model-events;6.9.2 +io.fabric8:kubernetes-model-extensions;6.9.2 +io.fabric8:kubernetes-model-flowcontrol;6.9.2 +io.fabric8:kubernetes-model-gatewayapi;6.9.2 +io.fabric8:kubernetes-model-jsonschema2pojo;6.9.2 +io.fabric8:kubernetes-model-kustomize;6.9.2 +io.fabric8:kubernetes-model-metrics;6.9.2 +io.fabric8:kubernetes-model-networking;6.9.2 +io.fabric8:kubernetes-model-node;6.9.2 +io.fabric8:kubernetes-model-policy;6.9.2 +io.fabric8:kubernetes-model-rbac;6.9.2 +io.fabric8:kubernetes-model-resource;6.9.2 +io.fabric8:kubernetes-model-scheduling;6.9.2 +io.fabric8:kubernetes-model-storageclass;6.9.2 +io.fabric8:kubernetes-openshift-uberjar;6.9.2 +io.fabric8:kubernetes-server-mock;6.9.2 +io.fabric8:kubernetes-test;6.9.2 +io.fabric8:mockwebserver;6.9.2 +io.fabric8:open-cluster-management-agent-model;6.9.2 +io.fabric8:open-cluster-management-apps-model;6.9.2 +io.fabric8:open-cluster-management-client;6.9.2 +io.fabric8:open-cluster-management-cluster-model;6.9.2 +io.fabric8:open-cluster-management-discovery-model;6.9.2 +io.fabric8:open-cluster-management-observability-model;6.9.2 +io.fabric8:open-cluster-management-operator-model;6.9.2 +io.fabric8:open-cluster-management-placementruleapps-model;6.9.2 +io.fabric8:open-cluster-management-policy-model;6.9.2 +io.fabric8:open-cluster-management-search-model;6.9.2 +io.fabric8:open-cluster-management-tests;6.9.2 +io.fabric8:openclustermanagement-examples;6.9.2 +io.fabric8:openshift-client;6.9.2 +io.fabric8:openshift-client-api;6.9.2 +io.fabric8:openshift-model;6.9.2 +io.fabric8:openshift-model-clusterautoscaling;6.9.2 +io.fabric8:openshift-model-config;6.9.2 +io.fabric8:openshift-model-console;6.9.2 +io.fabric8:openshift-model-hive;6.9.2 +io.fabric8:openshift-model-installer;6.9.2 +io.fabric8:openshift-model-machine;6.9.2 +io.fabric8:openshift-model-machineconfig;6.9.2 +io.fabric8:openshift-model-miscellaneous;6.9.2 +io.fabric8:openshift-model-monitoring;6.9.2 +io.fabric8:openshift-model-operator;6.9.2 +io.fabric8:openshift-model-operatorhub;6.9.2 +io.fabric8:openshift-model-storageversionmigrator;6.9.2 +io.fabric8:openshift-model-tuned;6.9.2 +io.fabric8:openshift-model-whereabouts;6.9.2 +io.fabric8:openshift-server-mock;6.9.2 +io.fabric8:service-catalog-examples;6.9.2 +io.fabric8:servicecatalog-client;6.9.2 +io.fabric8:servicecatalog-model;6.9.2 +io.fabric8:servicecatalog-tests;6.9.2 +io.fabric8:tekton-client;6.9.2 +io.fabric8:tekton-examples;6.9.2 +io.fabric8:tekton-model-triggers-v1alpha1;6.9.2 +io.fabric8:tekton-model-triggers-v1beta1;6.9.2 +io.fabric8:tekton-model-v1;6.9.2 +io.fabric8:tekton-model-v1alpha1;6.9.2 +io.fabric8:tekton-model-v1beta1;6.9.2 +io.fabric8:tekton-tests;6.9.2 +io.fabric8:verticalpodautoscaler-client;6.9.2 +io.fabric8:verticalpodautoscaler-examples;6.9.2 +io.fabric8:verticalpodautoscaler-model-v1;6.9.2 +io.fabric8:verticalpodautoscaler-tests;6.9.2 +io.fabric8:volcano-client;6.9.2 +io.fabric8:volcano-examples;6.9.2 +io.fabric8:volcano-model-v1beta1;6.9.2 +io.fabric8:volcano-tests;6.9.2 +io.fabric8:volumesnapshot-client;6.9.2 +io.fabric8:volumesnapshot-examples;6.9.2 +io.fabric8:volumesnapshot-model;6.9.2 +io.fabric8:volumesnapshot-tests;6.9.2 +io.github.git-commit-id:git-commit-id-maven-plugin;8.0.2 +io.github.openfeign.form:feign-form-spring;3.8.0 +io.github.openfeign:feign-annotation-error-decoder;13.2.1 +io.github.openfeign:feign-bom;13.2.1 +io.github.openfeign:feign-core;13.2.1 +io.github.openfeign:feign-dropwizard-metrics4;13.2.1 +io.github.openfeign:feign-dropwizard-metrics5;13.2.1 +io.github.openfeign:feign-googlehttpclient;13.2.1 +io.github.openfeign:feign-gson;13.2.1 +io.github.openfeign:feign-hc5;13.2.1 +io.github.openfeign:feign-httpclient;13.2.1 +io.github.openfeign:feign-hystrix;13.2.1 +io.github.openfeign:feign-jackson;13.2.1 +io.github.openfeign:feign-jackson-jaxb;13.2.1 +io.github.openfeign:feign-jackson-jr;13.2.1 +io.github.openfeign:feign-jakarta;13.2.1 +io.github.openfeign:feign-java11;13.2.1 +io.github.openfeign:feign-jaxb;13.2.1 +io.github.openfeign:feign-jaxb-jakarta;13.2.1 +io.github.openfeign:feign-jaxrs;13.2.1 +io.github.openfeign:feign-jaxrs2;13.2.1 +io.github.openfeign:feign-jaxrs3;13.2.1 +io.github.openfeign:feign-json;13.2.1 +io.github.openfeign:feign-kotlin;13.2.1 +io.github.openfeign:feign-micrometer;13.2.1 +io.github.openfeign:feign-mock;13.2.1 +io.github.openfeign:feign-moshi;13.2.1 +io.github.openfeign:feign-okhttp;13.2.1 +io.github.openfeign:feign-reactive-wrappers;13.2.1 +io.github.openfeign:feign-ribbon;13.2.1 +io.github.openfeign:feign-sax;13.2.1 +io.github.openfeign:feign-slf4j;13.2.1 +io.github.openfeign:feign-soap;13.2.1 +io.github.openfeign:feign-soap-jakarta;13.2.1 +io.github.openfeign:feign-spring4;13.2.1 +io.github.resilience4j:resilience4j-all;2.1.0 +io.github.resilience4j:resilience4j-annotations;2.1.0 +io.github.resilience4j:resilience4j-bom;2.1.0 +io.github.resilience4j:resilience4j-bulkhead;2.1.0 +io.github.resilience4j:resilience4j-cache;2.1.0 +io.github.resilience4j:resilience4j-circuitbreaker;2.1.0 +io.github.resilience4j:resilience4j-circularbuffer;2.1.0 +io.github.resilience4j:resilience4j-consumer;2.1.0 +io.github.resilience4j:resilience4j-core;2.1.0 +io.github.resilience4j:resilience4j-feign;2.1.0 +io.github.resilience4j:resilience4j-kotlin;2.1.0 +io.github.resilience4j:resilience4j-metrics;2.1.0 +io.github.resilience4j:resilience4j-micrometer;2.1.0 +io.github.resilience4j:resilience4j-ratelimiter;2.1.0 +io.github.resilience4j:resilience4j-reactor;2.1.0 +io.github.resilience4j:resilience4j-retry;2.1.0 +io.github.resilience4j:resilience4j-rxjava2;2.1.0 +io.github.resilience4j:resilience4j-rxjava3;2.1.0 +io.github.resilience4j:resilience4j-spring;2.1.0 +io.github.resilience4j:resilience4j-spring-boot2;2.1.0 +io.github.resilience4j:resilience4j-spring-boot3;2.1.0 +io.github.resilience4j:resilience4j-spring-cloud2;2.1.0 +io.github.resilience4j:resilience4j-spring6;2.1.0 +io.github.resilience4j:resilience4j-timelimiter;2.1.0 +io.github.resilience4j:resilience4j-vavr;2.1.0 +io.kubernetes:client-java;19.0.1 +io.kubernetes:client-java-extended;19.0.1 +io.kubernetes:client-java-spring-integration;19.0.1 +io.lettuce:lettuce-core;6.3.2.RELEASE +io.micrometer:concurrency-tests;1.13.0 +io.micrometer:context-propagation;1.1.1 +io.micrometer:docs;1.3.0 +io.micrometer:micrometer-bom;1.13.0 +io.micrometer:micrometer-commons;1.13.0 +io.micrometer:micrometer-core;1.13.0 +io.micrometer:micrometer-jakarta9;1.13.0 +io.micrometer:micrometer-java11;1.13.0 +io.micrometer:micrometer-jetty11;1.13.0 +io.micrometer:micrometer-jetty12;1.13.0 +io.micrometer:micrometer-observation;1.13.0 +io.micrometer:micrometer-observation-test;1.13.0 +io.micrometer:micrometer-registry-appoptics;1.13.0 +io.micrometer:micrometer-registry-atlas;1.13.0 +io.micrometer:micrometer-registry-azure-monitor;1.13.0 +io.micrometer:micrometer-registry-cloudwatch2;1.13.0 +io.micrometer:micrometer-registry-datadog;1.13.0 +io.micrometer:micrometer-registry-dynatrace;1.13.0 +io.micrometer:micrometer-registry-elastic;1.13.0 +io.micrometer:micrometer-registry-ganglia;1.13.0 +io.micrometer:micrometer-registry-graphite;1.13.0 +io.micrometer:micrometer-registry-health;1.13.0 +io.micrometer:micrometer-registry-humio;1.13.0 +io.micrometer:micrometer-registry-influx;1.13.0 +io.micrometer:micrometer-registry-jmx;1.13.0 +io.micrometer:micrometer-registry-kairos;1.13.0 +io.micrometer:micrometer-registry-new-relic;1.13.0 +io.micrometer:micrometer-registry-opentsdb;1.13.0 +io.micrometer:micrometer-registry-otlp;1.13.0 +io.micrometer:micrometer-registry-prometheus;1.13.0 +io.micrometer:micrometer-registry-prometheus-simpleclient;1.13.0 +io.micrometer:micrometer-registry-signalfx;1.13.0 +io.micrometer:micrometer-registry-stackdriver;1.13.0 +io.micrometer:micrometer-registry-statsd;1.13.0 +io.micrometer:micrometer-registry-wavefront;1.13.0 +io.micrometer:micrometer-test;1.13.0 +io.micrometer:micrometer-tracing;1.3.0 +io.micrometer:micrometer-tracing-bom;1.3.0 +io.micrometer:micrometer-tracing-bridge-brave;1.3.0 +io.micrometer:micrometer-tracing-bridge-otel;1.3.0 +io.micrometer:micrometer-tracing-integration-test;1.3.0 +io.micrometer:micrometer-tracing-reporter-wavefront;1.3.0 +io.micrometer:micrometer-tracing-test;1.3.0 +io.netty:netty-all;4.1.110.Final +io.netty:netty-bom;4.1.110.Final +io.netty:netty-buffer;4.1.110.Final +io.netty:netty-codec;4.1.110.Final +io.netty:netty-codec-dns;4.1.110.Final +io.netty:netty-codec-haproxy;4.1.110.Final +io.netty:netty-codec-http;4.1.110.Final +io.netty:netty-codec-http2;4.1.110.Final +io.netty:netty-codec-memcache;4.1.110.Final +io.netty:netty-codec-mqtt;4.1.110.Final +io.netty:netty-codec-redis;4.1.110.Final +io.netty:netty-codec-smtp;4.1.110.Final +io.netty:netty-codec-socks;4.1.110.Final +io.netty:netty-codec-stomp;4.1.110.Final +io.netty:netty-codec-xml;4.1.110.Final +io.netty:netty-common;4.1.110.Final +io.netty:netty-dev-tools;4.1.110.Final +io.netty:netty-example;4.1.110.Final +io.netty:netty-handler;4.1.110.Final +io.netty:netty-handler-proxy;4.1.110.Final +io.netty:netty-handler-ssl-ocsp;4.1.110.Final +io.netty:netty-resolver;4.1.110.Final +io.netty:netty-resolver-dns;4.1.110.Final +io.netty:netty-resolver-dns-classes-macos;4.1.110.Final +io.netty:netty-resolver-dns-native-macos;4.1.110.Final +io.netty:netty-tcnative;2.0.65.Final +io.netty:netty-tcnative-boringssl-static;2.0.65.Final +io.netty:netty-tcnative-classes;2.0.65.Final +io.netty:netty-transport;4.1.110.Final +io.netty:netty-transport-classes-epoll;4.1.110.Final +io.netty:netty-transport-classes-kqueue;4.1.110.Final +io.netty:netty-transport-native-epoll;4.1.110.Final +io.netty:netty-transport-native-kqueue;4.1.110.Final +io.netty:netty-transport-native-unix-common;4.1.110.Final +io.netty:netty-transport-rxtx;4.1.110.Final +io.netty:netty-transport-sctp;4.1.110.Final +io.netty:netty-transport-udt;4.1.110.Final +io.opentelemetry:opentelemetry-api;1.37.0 +io.opentelemetry:opentelemetry-bom;1.37.0 +io.opentelemetry:opentelemetry-context;1.37.0 +io.opentelemetry:opentelemetry-exporter-common;1.37.0 +io.opentelemetry:opentelemetry-exporter-logging;1.37.0 +io.opentelemetry:opentelemetry-exporter-logging-otlp;1.37.0 +io.opentelemetry:opentelemetry-exporter-otlp;1.37.0 +io.opentelemetry:opentelemetry-exporter-otlp-common;1.37.0 +io.opentelemetry:opentelemetry-exporter-sender-grpc-managed-channel;1.37.0 +io.opentelemetry:opentelemetry-exporter-sender-okhttp;1.37.0 +io.opentelemetry:opentelemetry-exporter-zipkin;1.37.0 +io.opentelemetry:opentelemetry-extension-kotlin;1.37.0 +io.opentelemetry:opentelemetry-extension-trace-propagators;1.37.0 +io.opentelemetry:opentelemetry-opentracing-shim;1.37.0 +io.opentelemetry:opentelemetry-sdk;1.37.0 +io.opentelemetry:opentelemetry-sdk-common;1.37.0 +io.opentelemetry:opentelemetry-sdk-extension-autoconfigure;1.37.0 +io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi;1.37.0 +io.opentelemetry:opentelemetry-sdk-extension-jaeger-remote-sampler;1.37.0 +io.opentelemetry:opentelemetry-sdk-logs;1.37.0 +io.opentelemetry:opentelemetry-sdk-metrics;1.37.0 +io.opentelemetry:opentelemetry-sdk-testing;1.37.0 +io.opentelemetry:opentelemetry-sdk-trace;1.37.0 +io.projectreactor.addons:reactor-adapter;3.5.1 +io.projectreactor.addons:reactor-extra;3.5.1 +io.projectreactor.addons:reactor-pool;1.0.5 +io.projectreactor.addons:reactor-pool-micrometer;0.1.5 +io.projectreactor.kafka:reactor-kafka;1.3.23 +io.projectreactor.kotlin:reactor-kotlin-extensions;1.2.2 +io.projectreactor.netty:reactor-netty;1.1.19 +io.projectreactor.netty:reactor-netty-core;1.1.19 +io.projectreactor.netty:reactor-netty-http;1.1.19 +io.projectreactor.netty:reactor-netty-http-brave;1.1.19 +io.projectreactor:reactor-bom;2023.0.6 +io.projectreactor:reactor-core;3.6.6 +io.projectreactor:reactor-core-micrometer;1.1.6 +io.projectreactor:reactor-test;3.6.6 +io.projectreactor:reactor-tools;3.6.6 +io.prometheus:prometheus-metrics-bom;1.2.1 +io.prometheus:prometheus-metrics-config;1.2.1 +io.prometheus:prometheus-metrics-core;1.2.1 +io.prometheus:prometheus-metrics-exporter-common;1.2.1 +io.prometheus:prometheus-metrics-exporter-httpserver;1.2.1 +io.prometheus:prometheus-metrics-exporter-opentelemetry;1.2.1 +io.prometheus:prometheus-metrics-exporter-servlet-jakarta;1.2.1 +io.prometheus:prometheus-metrics-exporter-servlet-javax;1.2.1 +io.prometheus:prometheus-metrics-exposition-formats;1.2.1 +io.prometheus:prometheus-metrics-instrumentation-dropwizard5;1.2.1 +io.prometheus:prometheus-metrics-instrumentation-jvm;1.2.1 +io.prometheus:prometheus-metrics-model;1.2.1 +io.prometheus:prometheus-metrics-shaded-dependencies;1.2.1 +io.prometheus:prometheus-metrics-shaded-opentelemetry;1.2.1 +io.prometheus:prometheus-metrics-shaded-protobuf;1.2.1 +io.prometheus:prometheus-metrics-simpleclient-bridge;1.2.1 +io.prometheus:prometheus-metrics-tracer;1.2.1 +io.prometheus:prometheus-metrics-tracer-common;1.2.1 +io.prometheus:prometheus-metrics-tracer-initializer;1.2.1 +io.prometheus:prometheus-metrics-tracer-otel;1.2.1 +io.prometheus:prometheus-metrics-tracer-otel-agent;1.2.1 +io.prometheus:simpleclient;0.16.0 +io.prometheus:simpleclient_bom;0.16.0 +io.prometheus:simpleclient_caffeine;0.16.0 +io.prometheus:simpleclient_common;0.16.0 +io.prometheus:simpleclient_dropwizard;0.16.0 +io.prometheus:simpleclient_graphite_bridge;0.16.0 +io.prometheus:simpleclient_guava;0.16.0 +io.prometheus:simpleclient_hibernate;0.16.0 +io.prometheus:simpleclient_hotspot;0.16.0 +io.prometheus:simpleclient_httpserver;0.16.0 +io.prometheus:simpleclient_jetty;0.16.0 +io.prometheus:simpleclient_jetty_jdk8;0.16.0 +io.prometheus:simpleclient_log4j;0.16.0 +io.prometheus:simpleclient_log4j2;0.16.0 +io.prometheus:simpleclient_logback;0.16.0 +io.prometheus:simpleclient_pushgateway;0.16.0 +io.prometheus:simpleclient_servlet;0.16.0 +io.prometheus:simpleclient_servlet_jakarta;0.16.0 +io.prometheus:simpleclient_spring_boot;0.16.0 +io.prometheus:simpleclient_spring_web;0.16.0 +io.prometheus:simpleclient_tracer_common;0.16.0 +io.prometheus:simpleclient_tracer_otel;0.16.0 +io.prometheus:simpleclient_tracer_otel_agent;0.16.0 +io.prometheus:simpleclient_vertx;0.16.0 +io.r2dbc:r2dbc-h2;1.0.0.RELEASE +io.r2dbc:r2dbc-mssql;1.0.2.RELEASE +io.r2dbc:r2dbc-pool;1.0.1.RELEASE +io.r2dbc:r2dbc-proxy;1.1.5.RELEASE +io.r2dbc:r2dbc-spi;1.0.0.RELEASE +io.reactivex.rxjava3:rxjava;3.1.8 +io.rest-assured:json-path;5.4.0 +io.rest-assured:json-schema-validator;5.4.0 +io.rest-assured:kotlin-extensions;5.4.0 +io.rest-assured:rest-assured;5.4.0 +io.rest-assured:rest-assured-all;5.4.0 +io.rest-assured:rest-assured-bom;5.4.0 +io.rest-assured:rest-assured-common;5.4.0 +io.rest-assured:scala-support;5.4.0 +io.rest-assured:spring-commons;5.4.0 +io.rest-assured:spring-mock-mvc;5.4.0 +io.rest-assured:spring-mock-mvc-kotlin-extensions;5.4.0 +io.rest-assured:spring-web-test-client;5.4.0 +io.rest-assured:spring-web-test-client-kotlin-extensions;5.4.0 +io.rest-assured:xml-path;5.4.0 +io.rsocket:rsocket-bom;1.1.3 +io.rsocket:rsocket-core;1.1.3 +io.rsocket:rsocket-load-balancer;1.1.3 +io.rsocket:rsocket-micrometer;1.1.3 +io.rsocket:rsocket-test;1.1.3 +io.rsocket:rsocket-transport-local;1.1.3 +io.rsocket:rsocket-transport-netty;1.1.3 +io.specto:hoverfly-java;0.13.0 +io.specto:hoverfly-java-junit5;0.13.0 +io.spring.gradle:dependency-management-plugin;1.1.5 +io.undertow:undertow-core;2.3.13.Final +io.undertow:undertow-servlet;2.3.13.Final +io.undertow:undertow-websockets-jsr;2.3.13.Final +io.zipkin.brave:brave;6.0.3 +io.zipkin.brave:brave-bom;6.0.3 +io.zipkin.brave:brave-context-jfr;6.0.3 +io.zipkin.brave:brave-context-log4j12;6.0.3 +io.zipkin.brave:brave-context-log4j2;6.0.3 +io.zipkin.brave:brave-context-slf4j;6.0.3 +io.zipkin.brave:brave-instrumentation-benchmarks;6.0.3 +io.zipkin.brave:brave-instrumentation-dubbo;6.0.3 +io.zipkin.brave:brave-instrumentation-grpc;6.0.3 +io.zipkin.brave:brave-instrumentation-http;6.0.3 +io.zipkin.brave:brave-instrumentation-http-tests;6.0.3 +io.zipkin.brave:brave-instrumentation-http-tests-jakarta;6.0.3 +io.zipkin.brave:brave-instrumentation-httpasyncclient;6.0.3 +io.zipkin.brave:brave-instrumentation-httpclient;6.0.3 +io.zipkin.brave:brave-instrumentation-httpclient5;6.0.3 +io.zipkin.brave:brave-instrumentation-jakarta-jms;6.0.3 +io.zipkin.brave:brave-instrumentation-jaxrs2;6.0.3 +io.zipkin.brave:brave-instrumentation-jersey-server;6.0.3 +io.zipkin.brave:brave-instrumentation-jms;6.0.3 +io.zipkin.brave:brave-instrumentation-jms-jakarta;6.0.3 +io.zipkin.brave:brave-instrumentation-kafka-clients;6.0.3 +io.zipkin.brave:brave-instrumentation-kafka-streams;6.0.3 +io.zipkin.brave:brave-instrumentation-messaging;6.0.3 +io.zipkin.brave:brave-instrumentation-mongodb;6.0.3 +io.zipkin.brave:brave-instrumentation-mysql;6.0.3 +io.zipkin.brave:brave-instrumentation-mysql6;6.0.3 +io.zipkin.brave:brave-instrumentation-mysql8;6.0.3 +io.zipkin.brave:brave-instrumentation-netty-codec-http;6.0.3 +io.zipkin.brave:brave-instrumentation-okhttp3;6.0.3 +io.zipkin.brave:brave-instrumentation-rpc;6.0.3 +io.zipkin.brave:brave-instrumentation-servlet;6.0.3 +io.zipkin.brave:brave-instrumentation-servlet-jakarta;6.0.3 +io.zipkin.brave:brave-instrumentation-spring-rabbit;6.0.3 +io.zipkin.brave:brave-instrumentation-spring-web;6.0.3 +io.zipkin.brave:brave-instrumentation-spring-webmvc;6.0.3 +io.zipkin.brave:brave-instrumentation-vertx-web;6.0.3 +io.zipkin.brave:brave-spring-beans;6.0.3 +io.zipkin.brave:brave-tests;6.0.3 +io.zipkin.reporter2:zipkin-reporter;3.4.0 +io.zipkin.reporter2:zipkin-reporter-bom;3.4.0 +io.zipkin.reporter2:zipkin-reporter-brave;3.4.0 +io.zipkin.reporter2:zipkin-reporter-metrics-micrometer;3.4.0 +io.zipkin.reporter2:zipkin-reporter-spring-beans;3.4.0 +io.zipkin.reporter2:zipkin-sender-activemq-client;3.4.0 +io.zipkin.reporter2:zipkin-sender-amqp-client;3.4.0 +io.zipkin.reporter2:zipkin-sender-kafka;3.4.0 +io.zipkin.reporter2:zipkin-sender-libthrift;3.4.0 +io.zipkin.reporter2:zipkin-sender-okhttp3;3.4.0 +io.zipkin.reporter2:zipkin-sender-urlconnection;3.4.0 +io.zipkin.zipkin2:zipkin;2.27.1 +jakarta.activation:jakarta.activation-api;2.1.3 +jakarta.annotation:jakarta.annotation-api;2.1.1 +jakarta.inject:jakarta.inject-api;2.0.1 +jakarta.jms:jakarta.jms-api;3.1.0 +jakarta.json.bind:jakarta.json.bind-api;3.0.1 +jakarta.json:jakarta.json-api;2.1.3 +jakarta.mail:jakarta.mail-api;2.1.3 +jakarta.management.j2ee:jakarta.management.j2ee-api;1.1.4 +jakarta.persistence:jakarta.persistence-api;3.1.0 +jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api;3.0.0 +jakarta.servlet:jakarta.servlet-api;6.0.0 +jakarta.transaction:jakarta.transaction-api;2.0.1 +jakarta.validation:jakarta.validation-api;3.0.2 +jakarta.websocket:jakarta.websocket-api;2.1.1 +jakarta.websocket:jakarta.websocket-client-api;2.1.1 +jakarta.ws.rs:jakarta.ws.rs-api;3.1.0 +jakarta.xml.bind:jakarta.xml.bind-api;4.0.2 +jakarta.xml.soap:jakarta.xml.soap-api;3.0.2 +jakarta.xml.ws:jakarta.xml.ws-api;4.0.2 +javax.cache:cache-api;1.1.1 +javax.money:money-api;1.1 +jaxen:jaxen;2.0.0 +junit:junit;4.13.2 +net.bytebuddy:byte-buddy;1.14.16 +net.bytebuddy:byte-buddy-agent;1.14.16 +net.minidev:json-smart;2.5.1 +net.sourceforge.htmlunit:htmlunit;2.70.0 +net.sourceforge.jtds:jtds;1.3.1 +net.sourceforge.nekohtml:nekohtml;1.9.22 +nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect;3.3.0 +org.apache.activemq:activemq-amqp;6.1.2 +org.apache.activemq:activemq-blueprint;6.1.2 +org.apache.activemq:activemq-branding;2.33.0 +org.apache.activemq:activemq-broker;6.1.2 +org.apache.activemq:activemq-client;6.1.2 +org.apache.activemq:activemq-console;6.1.2 +org.apache.activemq:activemq-http;6.1.2 +org.apache.activemq:activemq-jaas;6.1.2 +org.apache.activemq:activemq-jdbc-store;6.1.2 +org.apache.activemq:activemq-jms-pool;6.1.2 +org.apache.activemq:activemq-kahadb-store;6.1.2 +org.apache.activemq:activemq-karaf;6.1.2 +org.apache.activemq:activemq-log4j-appender;6.1.2 +org.apache.activemq:activemq-mqtt;6.1.2 +org.apache.activemq:activemq-openwire-generator;6.1.2 +org.apache.activemq:activemq-openwire-legacy;6.1.2 +org.apache.activemq:activemq-osgi;6.1.2 +org.apache.activemq:activemq-pool;6.1.2 +org.apache.activemq:activemq-ra;6.1.2 +org.apache.activemq:activemq-run;6.1.2 +org.apache.activemq:activemq-runtime-config;6.1.2 +org.apache.activemq:activemq-shiro;6.1.2 +org.apache.activemq:activemq-spring;6.1.2 +org.apache.activemq:activemq-stomp;6.1.2 +org.apache.activemq:activemq-web;6.1.2 +org.apache.activemq:artemis-amqp-protocol;2.33.0 +org.apache.activemq:artemis-bom;2.33.0 +org.apache.activemq:artemis-boot;2.33.0 +org.apache.activemq:artemis-cdi-client;2.33.0 +org.apache.activemq:artemis-cli;2.33.0 +org.apache.activemq:artemis-commons;2.33.0 +org.apache.activemq:artemis-console;2.33.0 +org.apache.activemq:artemis-core-client;2.33.0 +org.apache.activemq:artemis-core-client-all;2.33.0 +org.apache.activemq:artemis-core-client-osgi;2.33.0 +org.apache.activemq:artemis-dto;2.33.0 +org.apache.activemq:artemis-features;2.33.0 +org.apache.activemq:artemis-hornetq-protocol;2.33.0 +org.apache.activemq:artemis-hqclient-protocol;2.33.0 +org.apache.activemq:artemis-jakarta-client;2.33.0 +org.apache.activemq:artemis-jakarta-client-all;2.33.0 +org.apache.activemq:artemis-jakarta-openwire-protocol;2.33.0 +org.apache.activemq:artemis-jakarta-ra;2.33.0 +org.apache.activemq:artemis-jakarta-server;2.33.0 +org.apache.activemq:artemis-jakarta-service-extensions;2.33.0 +org.apache.activemq:artemis-jdbc-store;2.33.0 +org.apache.activemq:artemis-jms-client;2.33.0 +org.apache.activemq:artemis-jms-client-all;2.33.0 +org.apache.activemq:artemis-jms-client-osgi;2.33.0 +org.apache.activemq:artemis-jms-server;2.33.0 +org.apache.activemq:artemis-journal;2.33.0 +org.apache.activemq:artemis-lockmanager-api;2.33.0 +org.apache.activemq:artemis-lockmanager-ri;2.33.0 +org.apache.activemq:artemis-mqtt-protocol;2.33.0 +org.apache.activemq:artemis-openwire-protocol;2.33.0 +org.apache.activemq:artemis-plugin;2.33.0 +org.apache.activemq:artemis-ra;2.33.0 +org.apache.activemq:artemis-selector;2.33.0 +org.apache.activemq:artemis-server;2.33.0 +org.apache.activemq:artemis-server-osgi;2.33.0 +org.apache.activemq:artemis-service-extensions;2.33.0 +org.apache.activemq:artemis-stomp-protocol;2.33.0 +org.apache.activemq:artemis-web;2.33.0 +org.apache.activemq:artemis-website;2.33.0 +org.apache.cassandra:java-driver-bom;4.18.1 +org.apache.cassandra:java-driver-core;4.18.1 +org.apache.cassandra:java-driver-core-shaded;4.18.1 +org.apache.cassandra:java-driver-mapper-processor;4.18.1 +org.apache.cassandra:java-driver-mapper-runtime;4.18.1 +org.apache.cassandra:java-driver-metrics-micrometer;4.18.1 +org.apache.cassandra:java-driver-metrics-microprofile;4.18.1 +org.apache.cassandra:java-driver-query-builder;4.18.1 +org.apache.cassandra:java-driver-test-infra;4.18.1 +org.apache.commons:commons-collections4;4.4 +org.apache.commons:commons-dbcp2;2.12.0 +org.apache.commons:commons-lang3;3.14.0 +org.apache.commons:commons-pool2;2.12.0 +org.apache.curator:curator-framework;5.1.0 +org.apache.curator:curator-recipes;5.1.0 +org.apache.curator:curator-test;5.1.0 +org.apache.curator:curator-x-discovery;5.1.0 +org.apache.derby:derby;10.16.1.1 +org.apache.derby:derbyclient;10.16.1.1 +org.apache.derby:derbynet;10.16.1.1 +org.apache.derby:derbyoptionaltools;10.16.1.1 +org.apache.derby:derbyshared;10.16.1.1 +org.apache.derby:derbytools;10.16.1.1 +org.apache.groovy:groovy;4.0.21 +org.apache.groovy:groovy-ant;4.0.21 +org.apache.groovy:groovy-astbuilder;4.0.21 +org.apache.groovy:groovy-bom;4.0.21 +org.apache.groovy:groovy-cli-commons;4.0.21 +org.apache.groovy:groovy-cli-picocli;4.0.21 +org.apache.groovy:groovy-console;4.0.21 +org.apache.groovy:groovy-contracts;4.0.21 +org.apache.groovy:groovy-datetime;4.0.21 +org.apache.groovy:groovy-dateutil;4.0.21 +org.apache.groovy:groovy-docgenerator;4.0.21 +org.apache.groovy:groovy-ginq;4.0.21 +org.apache.groovy:groovy-groovydoc;4.0.21 +org.apache.groovy:groovy-groovysh;4.0.21 +org.apache.groovy:groovy-jmx;4.0.21 +org.apache.groovy:groovy-json;4.0.21 +org.apache.groovy:groovy-jsr223;4.0.21 +org.apache.groovy:groovy-macro;4.0.21 +org.apache.groovy:groovy-macro-library;4.0.21 +org.apache.groovy:groovy-nio;4.0.21 +org.apache.groovy:groovy-servlet;4.0.21 +org.apache.groovy:groovy-sql;4.0.21 +org.apache.groovy:groovy-swing;4.0.21 +org.apache.groovy:groovy-templates;4.0.21 +org.apache.groovy:groovy-test;4.0.21 +org.apache.groovy:groovy-test-junit5;4.0.21 +org.apache.groovy:groovy-testng;4.0.21 +org.apache.groovy:groovy-toml;4.0.21 +org.apache.groovy:groovy-typecheckers;4.0.21 +org.apache.groovy:groovy-xml;4.0.21 +org.apache.groovy:groovy-yaml;4.0.21 +org.apache.httpcomponents.client5:httpclient5;5.3.1 +org.apache.httpcomponents.client5:httpclient5-cache;5.3.1 +org.apache.httpcomponents.client5:httpclient5-fluent;5.3.1 +org.apache.httpcomponents.core5:httpcore5;5.2.4 +org.apache.httpcomponents.core5:httpcore5-h2;5.2.4 +org.apache.httpcomponents.core5:httpcore5-reactive;5.2.4 +org.apache.httpcomponents:httpasyncclient;4.1.5 +org.apache.httpcomponents:httpcore;4.4.16 +org.apache.httpcomponents:httpcore-nio;4.4.16 +org.apache.kafka:connect;3.7.0 +org.apache.kafka:connect-api;3.7.0 +org.apache.kafka:connect-basic-auth-extension;3.7.0 +org.apache.kafka:connect-file;3.7.0 +org.apache.kafka:connect-json;3.7.0 +org.apache.kafka:connect-mirror;3.7.0 +org.apache.kafka:connect-mirror-client;3.7.0 +org.apache.kafka:connect-runtime;3.7.0 +org.apache.kafka:connect-transforms;3.7.0 +org.apache.kafka:generator;3.7.0 +org.apache.kafka:kafka-clients;3.7.0 +org.apache.kafka:kafka-log4j-appender;3.7.0 +org.apache.kafka:kafka-metadata;3.7.0 +org.apache.kafka:kafka-raft;3.7.0 +org.apache.kafka:kafka-server-common;3.7.0 +org.apache.kafka:kafka-shell;3.7.0 +org.apache.kafka:kafka-storage;3.7.0 +org.apache.kafka:kafka-storage-api;3.7.0 +org.apache.kafka:kafka-streams;3.7.0 +org.apache.kafka:kafka-streams-scala_2.12;3.7.0 +org.apache.kafka:kafka-streams-scala_2.13;3.7.0 +org.apache.kafka:kafka-streams-test-utils;3.7.0 +org.apache.kafka:kafka-tools;3.7.0 +org.apache.kafka:kafka_2.12;3.7.0 +org.apache.kafka:kafka_2.13;3.7.0 +org.apache.kafka:trogdor;3.7.0 +org.apache.logging.log4j:log4j-1.2-api;2.23.1 +org.apache.logging.log4j:log4j-api;2.23.1 +org.apache.logging.log4j:log4j-api-test;2.23.1 +org.apache.logging.log4j:log4j-appserver;2.23.1 +org.apache.logging.log4j:log4j-bom;2.23.1 +org.apache.logging.log4j:log4j-cassandra;2.23.1 +org.apache.logging.log4j:log4j-core;2.23.1 +org.apache.logging.log4j:log4j-core-test;2.23.1 +org.apache.logging.log4j:log4j-couchdb;2.23.1 +org.apache.logging.log4j:log4j-docker;2.23.1 +org.apache.logging.log4j:log4j-flume-ng;2.23.1 +org.apache.logging.log4j:log4j-iostreams;2.23.1 +org.apache.logging.log4j:log4j-jakarta-smtp;2.23.1 +org.apache.logging.log4j:log4j-jakarta-web;2.23.1 +org.apache.logging.log4j:log4j-jcl;2.23.1 +org.apache.logging.log4j:log4j-jpa;2.23.1 +org.apache.logging.log4j:log4j-jpl;2.23.1 +org.apache.logging.log4j:log4j-jul;2.23.1 +org.apache.logging.log4j:log4j-kubernetes;2.23.1 +org.apache.logging.log4j:log4j-layout-template-json;2.23.1 +org.apache.logging.log4j:log4j-mongodb3;2.23.1 +org.apache.logging.log4j:log4j-mongodb4;2.23.1 +org.apache.logging.log4j:log4j-slf4j-impl;2.23.1 +org.apache.logging.log4j:log4j-slf4j2-impl;2.23.1 +org.apache.logging.log4j:log4j-spring-boot;2.23.1 +org.apache.logging.log4j:log4j-spring-cloud-config-client;2.23.1 +org.apache.logging.log4j:log4j-taglib;2.23.1 +org.apache.logging.log4j:log4j-to-jul;2.23.1 +org.apache.logging.log4j:log4j-to-slf4j;2.23.1 +org.apache.logging.log4j:log4j-web;2.23.1 +org.apache.maven.plugins:maven-antrun-plugin;3.1.0 +org.apache.maven.plugins:maven-assembly-plugin;3.7.1 +org.apache.maven.plugins:maven-clean-plugin;3.3.2 +org.apache.maven.plugins:maven-compiler-plugin;3.13.0 +org.apache.maven.plugins:maven-dependency-plugin;3.6.1 +org.apache.maven.plugins:maven-deploy-plugin;3.1.2 +org.apache.maven.plugins:maven-enforcer-plugin;3.4.1 +org.apache.maven.plugins:maven-failsafe-plugin;3.2.5 +org.apache.maven.plugins:maven-gpg-plugin;3.1.0 +org.apache.maven.plugins:maven-help-plugin;3.4.0 +org.apache.maven.plugins:maven-install-plugin;3.1.2 +org.apache.maven.plugins:maven-invoker-plugin;3.6.1 +org.apache.maven.plugins:maven-jar-plugin;3.4.1 +org.apache.maven.plugins:maven-javadoc-plugin;3.6.3 +org.apache.maven.plugins:maven-release-plugin;2.5.3 +org.apache.maven.plugins:maven-resources-plugin;3.3.1 +org.apache.maven.plugins:maven-shade-plugin;3.5.3 +org.apache.maven.plugins:maven-source-plugin;3.3.1 +org.apache.maven.plugins:maven-surefire-plugin;3.2.5 +org.apache.maven.plugins:maven-war-plugin;3.4.0 +org.apache.pulsar:bouncy-castle-bc;3.2.3 +org.apache.pulsar:bouncy-castle-bcfips;3.2.3 +org.apache.pulsar:bouncy-castle-parent;3.2.3 +org.apache.pulsar:buildtools;3.2.3 +org.apache.pulsar:distribution;3.2.3 +org.apache.pulsar:docker-images;3.2.3 +org.apache.pulsar:jclouds-shaded;3.2.3 +org.apache.pulsar:managed-ledger;3.2.3 +org.apache.pulsar:pulsar;3.2.3 +org.apache.pulsar:pulsar-all-docker-image;3.2.3 +org.apache.pulsar:pulsar-bom;3.2.3 +org.apache.pulsar:pulsar-broker;3.2.3 +org.apache.pulsar:pulsar-broker-auth-athenz;3.2.3 +org.apache.pulsar:pulsar-broker-auth-oidc;3.2.3 +org.apache.pulsar:pulsar-broker-auth-sasl;3.2.3 +org.apache.pulsar:pulsar-broker-common;3.2.3 +org.apache.pulsar:pulsar-cli-utils;3.2.3 +org.apache.pulsar:pulsar-client;3.2.3 +org.apache.pulsar:pulsar-client-1x;3.2.3 +org.apache.pulsar:pulsar-client-1x-base;3.2.3 +org.apache.pulsar:pulsar-client-2x-shaded;3.2.3 +org.apache.pulsar:pulsar-client-admin;3.2.3 +org.apache.pulsar:pulsar-client-admin-api;3.2.3 +org.apache.pulsar:pulsar-client-admin-original;3.2.3 +org.apache.pulsar:pulsar-client-all;3.2.3 +org.apache.pulsar:pulsar-client-api;3.2.3 +org.apache.pulsar:pulsar-client-auth-athenz;3.2.3 +org.apache.pulsar:pulsar-client-auth-sasl;3.2.3 +org.apache.pulsar:pulsar-client-messagecrypto-bc;3.2.3 +org.apache.pulsar:pulsar-client-original;3.2.3 +org.apache.pulsar:pulsar-client-reactive-adapter;0.5.5 +org.apache.pulsar:pulsar-client-reactive-api;0.5.5 +org.apache.pulsar:pulsar-client-reactive-jackson;0.5.5 +org.apache.pulsar:pulsar-client-reactive-producer-cache-caffeine;0.5.5 +org.apache.pulsar:pulsar-client-reactive-producer-cache-caffeine-shaded;0.5.5 +org.apache.pulsar:pulsar-client-tools;3.2.3 +org.apache.pulsar:pulsar-client-tools-api;3.2.3 +org.apache.pulsar:pulsar-common;3.2.3 +org.apache.pulsar:pulsar-config-validation;3.2.3 +org.apache.pulsar:pulsar-docker-image;3.2.3 +org.apache.pulsar:pulsar-docs-tools;3.2.3 +org.apache.pulsar:pulsar-functions;3.2.3 +org.apache.pulsar:pulsar-functions-api;3.2.3 +org.apache.pulsar:pulsar-functions-api-examples;3.2.3 +org.apache.pulsar:pulsar-functions-api-examples-builtin;3.2.3 +org.apache.pulsar:pulsar-functions-instance;3.2.3 +org.apache.pulsar:pulsar-functions-local-runner;3.2.3 +org.apache.pulsar:pulsar-functions-local-runner-original;3.2.3 +org.apache.pulsar:pulsar-functions-proto;3.2.3 +org.apache.pulsar:pulsar-functions-runtime;3.2.3 +org.apache.pulsar:pulsar-functions-runtime-all;3.2.3 +org.apache.pulsar:pulsar-functions-secrets;3.2.3 +org.apache.pulsar:pulsar-functions-utils;3.2.3 +org.apache.pulsar:pulsar-functions-worker;3.2.3 +org.apache.pulsar:pulsar-io;3.2.3 +org.apache.pulsar:pulsar-io-aerospike;3.2.3 +org.apache.pulsar:pulsar-io-alluxio;3.2.3 +org.apache.pulsar:pulsar-io-aws;3.2.3 +org.apache.pulsar:pulsar-io-batch-data-generator;3.2.3 +org.apache.pulsar:pulsar-io-batch-discovery-triggerers;3.2.3 +org.apache.pulsar:pulsar-io-canal;3.2.3 +org.apache.pulsar:pulsar-io-cassandra;3.2.3 +org.apache.pulsar:pulsar-io-common;3.2.3 +org.apache.pulsar:pulsar-io-core;3.2.3 +org.apache.pulsar:pulsar-io-data-generator;3.2.3 +org.apache.pulsar:pulsar-io-debezium;3.2.3 +org.apache.pulsar:pulsar-io-debezium-core;3.2.3 +org.apache.pulsar:pulsar-io-debezium-mongodb;3.2.3 +org.apache.pulsar:pulsar-io-debezium-mssql;3.2.3 +org.apache.pulsar:pulsar-io-debezium-mysql;3.2.3 +org.apache.pulsar:pulsar-io-debezium-oracle;3.2.3 +org.apache.pulsar:pulsar-io-debezium-postgres;3.2.3 +org.apache.pulsar:pulsar-io-distribution;3.2.3 +org.apache.pulsar:pulsar-io-docs;3.2.3 +org.apache.pulsar:pulsar-io-dynamodb;3.2.3 +org.apache.pulsar:pulsar-io-elastic-search;3.2.3 +org.apache.pulsar:pulsar-io-file;3.2.3 +org.apache.pulsar:pulsar-io-flume;3.2.3 +org.apache.pulsar:pulsar-io-hbase;3.2.3 +org.apache.pulsar:pulsar-io-hdfs2;3.2.3 +org.apache.pulsar:pulsar-io-hdfs3;3.2.3 +org.apache.pulsar:pulsar-io-http;3.2.3 +org.apache.pulsar:pulsar-io-influxdb;3.2.3 +org.apache.pulsar:pulsar-io-jdbc;3.2.3 +org.apache.pulsar:pulsar-io-jdbc-clickhouse;3.2.3 +org.apache.pulsar:pulsar-io-jdbc-core;3.2.3 +org.apache.pulsar:pulsar-io-jdbc-mariadb;3.2.3 +org.apache.pulsar:pulsar-io-jdbc-openmldb;3.2.3 +org.apache.pulsar:pulsar-io-jdbc-postgres;3.2.3 +org.apache.pulsar:pulsar-io-jdbc-sqlite;3.2.3 +org.apache.pulsar:pulsar-io-kafka;3.2.3 +org.apache.pulsar:pulsar-io-kafka-connect-adaptor;3.2.3 +org.apache.pulsar:pulsar-io-kafka-connect-adaptor-nar;3.2.3 +org.apache.pulsar:pulsar-io-kinesis;3.2.3 +org.apache.pulsar:pulsar-io-mongo;3.2.3 +org.apache.pulsar:pulsar-io-netty;3.2.3 +org.apache.pulsar:pulsar-io-nsq;3.2.3 +org.apache.pulsar:pulsar-io-rabbitmq;3.2.3 +org.apache.pulsar:pulsar-io-redis;3.2.3 +org.apache.pulsar:pulsar-io-solr;3.2.3 +org.apache.pulsar:pulsar-io-twitter;3.2.3 +org.apache.pulsar:pulsar-metadata;3.2.3 +org.apache.pulsar:pulsar-offloader-distribution;3.2.3 +org.apache.pulsar:pulsar-package-bookkeeper-storage;3.2.3 +org.apache.pulsar:pulsar-package-core;3.2.3 +org.apache.pulsar:pulsar-package-filesystem-storage;3.2.3 +org.apache.pulsar:pulsar-package-management;3.2.3 +org.apache.pulsar:pulsar-proxy;3.2.3 +org.apache.pulsar:pulsar-server-distribution;3.2.3 +org.apache.pulsar:pulsar-shell-distribution;3.2.3 +org.apache.pulsar:pulsar-testclient;3.2.3 +org.apache.pulsar:pulsar-transaction-common;3.2.3 +org.apache.pulsar:pulsar-transaction-coordinator;3.2.3 +org.apache.pulsar:pulsar-transaction-parent;3.2.3 +org.apache.pulsar:pulsar-websocket;3.2.3 +org.apache.pulsar:structured-event-log;3.2.3 +org.apache.pulsar:testmocks;3.2.3 +org.apache.pulsar:tiered-storage-file-system;3.2.3 +org.apache.pulsar:tiered-storage-jcloud;3.2.3 +org.apache.pulsar:tiered-storage-parent;3.2.3 +org.apache.tomcat.embed:tomcat-embed-core;10.1.24 +org.apache.tomcat.embed:tomcat-embed-el;10.1.24 +org.apache.tomcat.embed:tomcat-embed-jasper;10.1.24 +org.apache.tomcat.embed:tomcat-embed-websocket;10.1.24 +org.apache.tomcat:tomcat-annotations-api;10.1.24 +org.apache.tomcat:tomcat-jdbc;10.1.24 +org.apache.tomcat:tomcat-jsp-api;10.1.24 +org.aspectj:aspectjrt;1.9.22 +org.aspectj:aspectjtools;1.9.22 +org.aspectj:aspectjweaver;1.9.22 +org.assertj:assertj-bom;3.25.3 +org.assertj:assertj-core;3.25.3 +org.assertj:assertj-guava;3.25.3 +org.awaitility:awaitility;4.2.1 +org.awaitility:awaitility-groovy;4.2.1 +org.awaitility:awaitility-kotlin;4.2.1 +org.awaitility:awaitility-scala;4.2.1 +org.cache2k:cache2k-api;2.6.1.Final +org.cache2k:cache2k-config;2.6.1.Final +org.cache2k:cache2k-core;2.6.1.Final +org.cache2k:cache2k-jcache;2.6.1.Final +org.cache2k:cache2k-micrometer;2.6.1.Final +org.cache2k:cache2k-spring;2.6.1.Final +org.codehaus.janino:commons-compiler;3.1.12 +org.codehaus.janino:commons-compiler-jdk;3.1.12 +org.codehaus.janino:janino;3.1.12 +org.codehaus.mojo:build-helper-maven-plugin;3.5.0 +org.codehaus.mojo:versions-maven-plugin;2.16.2 +org.codehaus.mojo:xml-maven-plugin;1.1.0 +org.crac:crac;1.4.0 +org.cyclonedx:cyclonedx-maven-plugin;2.8.0 +org.eclipse.angus:angus-activation;2.0.2 +org.eclipse.angus:angus-core;2.0.3 +org.eclipse.angus:angus-mail;2.0.3 +org.eclipse.angus:dsn;2.0.3 +org.eclipse.angus:gimap;2.0.3 +org.eclipse.angus:imap;2.0.3 +org.eclipse.angus:jakarta.mail;2.0.3 +org.eclipse.angus:logging-mailhandler;2.0.3 +org.eclipse.angus:pop3;2.0.3 +org.eclipse.angus:smtp;2.0.3 +org.eclipse.jetty.demos:jetty-demo-handler;12.0.9 +org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-alpn;12.0.9 +org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-boot;12.0.9 +org.eclipse.jetty.ee10.osgi:jetty-ee10-osgi-boot-jsp;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client-webapp;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-client-webapp;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server;12.0.9 +org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-annotations;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-apache-jsp;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-bom;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-cdi;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-fcgi-proxy;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-glassfish-jstl;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-jaspi;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-jndi;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-jspc-maven-plugin;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-maven-plugin;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-plus;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-proxy;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-quickstart;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-runner;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-servlet;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-servlets;12.0.9 +org.eclipse.jetty.ee10:jetty-ee10-webapp;12.0.9 +org.eclipse.jetty.fcgi:jetty-fcgi-client;12.0.9 +org.eclipse.jetty.fcgi:jetty-fcgi-proxy;12.0.9 +org.eclipse.jetty.fcgi:jetty-fcgi-server;12.0.9 +org.eclipse.jetty.http2:jetty-http2-client;12.0.9 +org.eclipse.jetty.http2:jetty-http2-client-transport;12.0.9 +org.eclipse.jetty.http2:jetty-http2-common;12.0.9 +org.eclipse.jetty.http2:jetty-http2-hpack;12.0.9 +org.eclipse.jetty.http2:jetty-http2-server;12.0.9 +org.eclipse.jetty.http3:jetty-http3-client;12.0.9 +org.eclipse.jetty.http3:jetty-http3-client-transport;12.0.9 +org.eclipse.jetty.http3:jetty-http3-common;12.0.9 +org.eclipse.jetty.http3:jetty-http3-qpack;12.0.9 +org.eclipse.jetty.http3:jetty-http3-server;12.0.9 +org.eclipse.jetty.quic:jetty-quic-client;12.0.9 +org.eclipse.jetty.quic:jetty-quic-common;12.0.9 +org.eclipse.jetty.quic:jetty-quic-quiche-common;12.0.9 +org.eclipse.jetty.quic:jetty-quic-quiche-foreign;12.0.9 +org.eclipse.jetty.quic:jetty-quic-quiche-jna;12.0.9 +org.eclipse.jetty.quic:jetty-quic-server;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-core-client;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-core-common;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-core-server;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-jetty-api;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-jetty-client;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-jetty-common;12.0.9 +org.eclipse.jetty.websocket:jetty-websocket-jetty-server;12.0.9 +org.eclipse.jetty:jetty-alpn-client;12.0.9 +org.eclipse.jetty:jetty-alpn-conscrypt-client;12.0.9 +org.eclipse.jetty:jetty-alpn-conscrypt-server;12.0.9 +org.eclipse.jetty:jetty-alpn-java-client;12.0.9 +org.eclipse.jetty:jetty-alpn-java-server;12.0.9 +org.eclipse.jetty:jetty-alpn-server;12.0.9 +org.eclipse.jetty:jetty-bom;12.0.9 +org.eclipse.jetty:jetty-client;12.0.9 +org.eclipse.jetty:jetty-deploy;12.0.9 +org.eclipse.jetty:jetty-http;12.0.9 +org.eclipse.jetty:jetty-http-spi;12.0.9 +org.eclipse.jetty:jetty-http-tools;12.0.9 +org.eclipse.jetty:jetty-io;12.0.9 +org.eclipse.jetty:jetty-jmx;12.0.9 +org.eclipse.jetty:jetty-jndi;12.0.9 +org.eclipse.jetty:jetty-keystore;12.0.9 +org.eclipse.jetty:jetty-openid;12.0.9 +org.eclipse.jetty:jetty-osgi;12.0.9 +org.eclipse.jetty:jetty-plus;12.0.9 +org.eclipse.jetty:jetty-proxy;12.0.9 +org.eclipse.jetty:jetty-reactive-httpclient;4.0.4 +org.eclipse.jetty:jetty-rewrite;12.0.9 +org.eclipse.jetty:jetty-security;12.0.9 +org.eclipse.jetty:jetty-server;12.0.9 +org.eclipse.jetty:jetty-session;12.0.9 +org.eclipse.jetty:jetty-slf4j-impl;12.0.9 +org.eclipse.jetty:jetty-start;12.0.9 +org.eclipse.jetty:jetty-unixdomain-server;12.0.9 +org.eclipse.jetty:jetty-util;12.0.9 +org.eclipse.jetty:jetty-util-ajax;12.0.9 +org.eclipse.jetty:jetty-xml;12.0.9 +org.eclipse.jgit:org.eclipse.jgit;6.6.1.202309021850-r +org.eclipse.jgit:org.eclipse.jgit.http.apache;6.6.1.202309021850-r +org.eclipse.jgit:org.eclipse.jgit.junit.http;6.6.1.202309021850-r +org.eclipse.jgit:org.eclipse.jgit.ssh.apache;6.6.1.202309021850-r +org.eclipse:yasson;3.0.3 +org.ehcache:ehcache;3.10.8 +org.ehcache:ehcache-clustered;3.10.8 +org.ehcache:ehcache-transactions;3.10.8 +org.elasticsearch.client:elasticsearch-rest-client;8.13.4 +org.elasticsearch.client:elasticsearch-rest-client-sniffer;8.13.4 +org.firebirdsql.jdbc:jaybird;5.0.4.java11 +org.flywaydb:flyway-commandline;10.10.0 +org.flywaydb:flyway-core;10.10.0 +org.flywaydb:flyway-database-db2;10.10.0 +org.flywaydb:flyway-database-derby;10.10.0 +org.flywaydb:flyway-database-hsqldb;10.10.0 +org.flywaydb:flyway-database-informix;10.10.0 +org.flywaydb:flyway-database-mongodb;10.10.0 +org.flywaydb:flyway-database-oracle;10.10.0 +org.flywaydb:flyway-database-postgresql;10.10.0 +org.flywaydb:flyway-database-redshift;10.10.0 +org.flywaydb:flyway-database-saphana;10.10.0 +org.flywaydb:flyway-database-snowflake;10.10.0 +org.flywaydb:flyway-database-sybasease;10.10.0 +org.flywaydb:flyway-firebird;10.10.0 +org.flywaydb:flyway-gcp-bigquery;10.10.0 +org.flywaydb:flyway-gcp-spanner;10.10.0 +org.flywaydb:flyway-maven-plugin;10.10.0 +org.flywaydb:flyway-mysql;10.10.0 +org.flywaydb:flyway-singlestore;10.10.0 +org.flywaydb:flyway-sqlserver;10.10.0 +org.freemarker:freemarker;2.3.32 +org.glassfish.jaxb:codemodel;4.0.5 +org.glassfish.jaxb:jaxb-bom;4.0.5 +org.glassfish.jaxb:jaxb-core;4.0.5 +org.glassfish.jaxb:jaxb-jxc;4.0.5 +org.glassfish.jaxb:jaxb-runtime;4.0.5 +org.glassfish.jaxb:jaxb-xjc;4.0.5 +org.glassfish.jaxb:txw2;4.0.5 +org.glassfish.jaxb:xsom;4.0.5 +org.glassfish.jersey.bundles:jaxrs-ri;3.1.6 +org.glassfish.jersey.connectors:jersey-apache-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-apache5-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-grizzly-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-helidon-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-jdk-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-jetty-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-jetty-http2-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-jetty11-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-jnh-connector;3.1.6 +org.glassfish.jersey.connectors:jersey-netty-connector;3.1.6 +org.glassfish.jersey.containers.glassfish:jersey-gf-ejb;3.1.6 +org.glassfish.jersey.containers:jersey-container-grizzly2-http;3.1.6 +org.glassfish.jersey.containers:jersey-container-grizzly2-servlet;3.1.6 +org.glassfish.jersey.containers:jersey-container-jdk-http;3.1.6 +org.glassfish.jersey.containers:jersey-container-jetty-http;3.1.6 +org.glassfish.jersey.containers:jersey-container-jetty-http2;3.1.6 +org.glassfish.jersey.containers:jersey-container-jetty-servlet;3.1.6 +org.glassfish.jersey.containers:jersey-container-jetty11-http;3.1.6 +org.glassfish.jersey.containers:jersey-container-netty-http;3.1.6 +org.glassfish.jersey.containers:jersey-container-servlet;3.1.6 +org.glassfish.jersey.containers:jersey-container-servlet-core;3.1.6 +org.glassfish.jersey.containers:jersey-container-simple-http;3.1.6 +org.glassfish.jersey.core:jersey-client;3.1.6 +org.glassfish.jersey.core:jersey-common;3.1.6 +org.glassfish.jersey.core:jersey-server;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-cdi-rs-inject;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-cdi1x;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-cdi1x-ban-custom-hk2-binding;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-cdi1x-servlet;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-cdi1x-transaction;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-cdi1x-validation;3.1.6 +org.glassfish.jersey.ext.cdi:jersey-weld2-se;3.1.6 +org.glassfish.jersey.ext.microprofile:jersey-mp-config;3.1.6 +org.glassfish.jersey.ext.microprofile:jersey-mp-rest-client;3.1.6 +org.glassfish.jersey.ext.rx:jersey-rx-client-guava;3.1.6 +org.glassfish.jersey.ext.rx:jersey-rx-client-rxjava;3.1.6 +org.glassfish.jersey.ext.rx:jersey-rx-client-rxjava2;3.1.6 +org.glassfish.jersey.ext:jersey-bean-validation;3.1.6 +org.glassfish.jersey.ext:jersey-declarative-linking;3.1.6 +org.glassfish.jersey.ext:jersey-entity-filtering;3.1.6 +org.glassfish.jersey.ext:jersey-metainf-services;3.1.6 +org.glassfish.jersey.ext:jersey-micrometer;3.1.6 +org.glassfish.jersey.ext:jersey-mvc;3.1.6 +org.glassfish.jersey.ext:jersey-mvc-bean-validation;3.1.6 +org.glassfish.jersey.ext:jersey-mvc-freemarker;3.1.6 +org.glassfish.jersey.ext:jersey-mvc-jsp;3.1.6 +org.glassfish.jersey.ext:jersey-mvc-mustache;3.1.6 +org.glassfish.jersey.ext:jersey-proxy-client;3.1.6 +org.glassfish.jersey.ext:jersey-spring6;3.1.6 +org.glassfish.jersey.ext:jersey-wadl-doclet;3.1.6 +org.glassfish.jersey.inject:jersey-cdi2-se;3.1.6 +org.glassfish.jersey.inject:jersey-hk2;3.1.6 +org.glassfish.jersey.media:jersey-media-jaxb;3.1.6 +org.glassfish.jersey.media:jersey-media-json-binding;3.1.6 +org.glassfish.jersey.media:jersey-media-json-gson;3.1.6 +org.glassfish.jersey.media:jersey-media-json-jackson;3.1.6 +org.glassfish.jersey.media:jersey-media-json-jettison;3.1.6 +org.glassfish.jersey.media:jersey-media-json-processing;3.1.6 +org.glassfish.jersey.media:jersey-media-kryo;3.1.6 +org.glassfish.jersey.media:jersey-media-moxy;3.1.6 +org.glassfish.jersey.media:jersey-media-multipart;3.1.6 +org.glassfish.jersey.media:jersey-media-sse;3.1.6 +org.glassfish.jersey.security:oauth1-client;3.1.6 +org.glassfish.jersey.security:oauth1-server;3.1.6 +org.glassfish.jersey.security:oauth1-signature;3.1.6 +org.glassfish.jersey.security:oauth2-client;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-bundle;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-external;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-inmemory;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jdk-http;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-jetty-http2;3.1.6 +org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-simple;3.1.6 +org.glassfish.jersey.test-framework:jersey-test-framework-core;3.1.6 +org.glassfish.jersey.test-framework:jersey-test-framework-util;3.1.6 +org.glassfish.jersey:jersey-bom;3.1.6 +org.glassfish.web:jakarta.servlet.jsp.jstl;3.0.1 +org.graalvm.buildtools:native-maven-plugin;0.10.2 +org.hamcrest:hamcrest;2.2 +org.hamcrest:hamcrest-core;2.2 +org.hamcrest:hamcrest-library;2.2 +org.hibernate.orm:hibernate-agroal;6.5.2.Final +org.hibernate.orm:hibernate-ant;6.5.2.Final +org.hibernate.orm:hibernate-c3p0;6.5.2.Final +org.hibernate.orm:hibernate-community-dialects;6.5.2.Final +org.hibernate.orm:hibernate-core;6.5.2.Final +org.hibernate.orm:hibernate-envers;6.5.2.Final +org.hibernate.orm:hibernate-graalvm;6.5.2.Final +org.hibernate.orm:hibernate-hikaricp;6.5.2.Final +org.hibernate.orm:hibernate-jcache;6.5.2.Final +org.hibernate.orm:hibernate-jpamodelgen;6.5.2.Final +org.hibernate.orm:hibernate-micrometer;6.5.2.Final +org.hibernate.orm:hibernate-proxool;6.5.2.Final +org.hibernate.orm:hibernate-spatial;6.5.2.Final +org.hibernate.orm:hibernate-testing;6.5.2.Final +org.hibernate.orm:hibernate-vibur;6.5.2.Final +org.hibernate.validator:hibernate-validator;8.0.1.Final +org.hibernate.validator:hibernate-validator-annotation-processor;8.0.1.Final +org.hsqldb:hsqldb;2.7.2 +org.infinispan.protostream:protostream;5.0.4.Final +org.infinispan.protostream:protostream-processor;5.0.4.Final +org.infinispan.protostream:protostream-types;5.0.4.Final +org.infinispan:infinispan-anchored-keys;15.0.4.Final +org.infinispan:infinispan-api;15.0.4.Final +org.infinispan:infinispan-bom;15.0.4.Final +org.infinispan:infinispan-cachestore-jdbc;15.0.4.Final +org.infinispan:infinispan-cachestore-jdbc-common;15.0.4.Final +org.infinispan:infinispan-cachestore-remote;15.0.4.Final +org.infinispan:infinispan-cachestore-rocksdb;15.0.4.Final +org.infinispan:infinispan-cachestore-sql;15.0.4.Final +org.infinispan:infinispan-cdi-common;15.0.4.Final +org.infinispan:infinispan-cdi-embedded;15.0.4.Final +org.infinispan:infinispan-cdi-remote;15.0.4.Final +org.infinispan:infinispan-checkstyle;15.0.4.Final +org.infinispan:infinispan-cli-client;15.0.4.Final +org.infinispan:infinispan-client-hotrod;15.0.4.Final +org.infinispan:infinispan-client-rest;15.0.4.Final +org.infinispan:infinispan-clustered-counter;15.0.4.Final +org.infinispan:infinispan-clustered-lock;15.0.4.Final +org.infinispan:infinispan-commons;15.0.4.Final +org.infinispan:infinispan-commons-graalvm;15.0.4.Final +org.infinispan:infinispan-commons-test;15.0.4.Final +org.infinispan:infinispan-component-annotations;15.0.4.Final +org.infinispan:infinispan-component-processor;15.0.4.Final +org.infinispan:infinispan-console;15.0.3.Final +org.infinispan:infinispan-core;15.0.4.Final +org.infinispan:infinispan-core-graalvm;15.0.4.Final +org.infinispan:infinispan-hibernate-cache-commons;15.0.4.Final +org.infinispan:infinispan-hibernate-cache-spi;15.0.4.Final +org.infinispan:infinispan-hibernate-cache-v62;15.0.4.Final +org.infinispan:infinispan-hotrod;15.0.4.Final +org.infinispan:infinispan-jboss-marshalling;15.0.4.Final +org.infinispan:infinispan-jcache;15.0.4.Final +org.infinispan:infinispan-jcache-commons;15.0.4.Final +org.infinispan:infinispan-jcache-remote;15.0.4.Final +org.infinispan:infinispan-key-value-store-client;15.0.4.Final +org.infinispan:infinispan-logging-annotations;15.0.4.Final +org.infinispan:infinispan-logging-processor;15.0.4.Final +org.infinispan:infinispan-multimap;15.0.4.Final +org.infinispan:infinispan-objectfilter;15.0.4.Final +org.infinispan:infinispan-quarkus-embedded;15.0.4.Final +org.infinispan:infinispan-query;15.0.4.Final +org.infinispan:infinispan-query-core;15.0.4.Final +org.infinispan:infinispan-query-dsl;15.0.4.Final +org.infinispan:infinispan-remote-query-client;15.0.4.Final +org.infinispan:infinispan-remote-query-server;15.0.4.Final +org.infinispan:infinispan-scripting;15.0.4.Final +org.infinispan:infinispan-server-core;15.0.4.Final +org.infinispan:infinispan-server-hotrod;15.0.4.Final +org.infinispan:infinispan-server-memcached;15.0.4.Final +org.infinispan:infinispan-server-resp;15.0.4.Final +org.infinispan:infinispan-server-rest;15.0.4.Final +org.infinispan:infinispan-server-router;15.0.4.Final +org.infinispan:infinispan-server-runtime;15.0.4.Final +org.infinispan:infinispan-server-testdriver-core;15.0.4.Final +org.infinispan:infinispan-server-testdriver-junit4;15.0.4.Final +org.infinispan:infinispan-server-testdriver-junit5;15.0.4.Final +org.infinispan:infinispan-spring-boot3-starter-embedded;15.0.4.Final +org.infinispan:infinispan-spring-boot3-starter-remote;15.0.4.Final +org.infinispan:infinispan-spring6-common;15.0.4.Final +org.infinispan:infinispan-spring6-embedded;15.0.4.Final +org.infinispan:infinispan-spring6-remote;15.0.4.Final +org.infinispan:infinispan-tasks;15.0.4.Final +org.infinispan:infinispan-tasks-api;15.0.4.Final +org.infinispan:infinispan-tools;15.0.4.Final +org.influxdb:influxdb-java;2.24 +org.jboss.logging:jboss-logging;3.5.3.Final +org.jdom:jdom2;2.0.6.1 +org.jetbrains.kotlin:kotlin-bom;1.9.24 +org.jetbrains.kotlin:kotlin-compiler;1.9.24 +org.jetbrains.kotlin:kotlin-compiler-embeddable;1.9.24 +org.jetbrains.kotlin:kotlin-daemon-client;1.9.24 +org.jetbrains.kotlin:kotlin-main-kts;1.9.24 +org.jetbrains.kotlin:kotlin-maven-plugin;1.9.24 +org.jetbrains.kotlin:kotlin-osgi-bundle;1.9.24 +org.jetbrains.kotlin:kotlin-reflect;1.9.24 +org.jetbrains.kotlin:kotlin-script-runtime;1.9.24 +org.jetbrains.kotlin:kotlin-scripting-common;1.9.24 +org.jetbrains.kotlin:kotlin-scripting-ide-services;1.9.24 +org.jetbrains.kotlin:kotlin-scripting-jvm;1.9.24 +org.jetbrains.kotlin:kotlin-scripting-jvm-host;1.9.24 +org.jetbrains.kotlin:kotlin-stdlib;1.9.24 +org.jetbrains.kotlin:kotlin-stdlib-common;1.9.24 +org.jetbrains.kotlin:kotlin-stdlib-jdk7;1.9.24 +org.jetbrains.kotlin:kotlin-stdlib-jdk8;1.9.24 +org.jetbrains.kotlin:kotlin-stdlib-js;1.9.24 +org.jetbrains.kotlin:kotlin-test;1.9.24 +org.jetbrains.kotlin:kotlin-test-annotations-common;1.9.24 +org.jetbrains.kotlin:kotlin-test-common;1.9.24 +org.jetbrains.kotlin:kotlin-test-js;1.9.24 +org.jetbrains.kotlin:kotlin-test-junit;1.9.24 +org.jetbrains.kotlin:kotlin-test-junit5;1.9.24 +org.jetbrains.kotlin:kotlin-test-testng;1.9.24 +org.jetbrains.kotlinx:kotlinx-coroutines-android;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-bom;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-debug;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-guava;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-javafx;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-jdk8;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-jdk9;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-play-services;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-reactive;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-reactor;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-rx2;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-rx3;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-slf4j;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-swing;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-test;1.8.1 +org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm;1.8.1 +org.jetbrains.kotlinx:kotlinx-serialization-bom;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-cbor;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-cbor-jvm;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-core;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-core-jvm;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-hocon;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-json;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-json-jvm;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-json-okio;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-json-okio-jvm;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-properties;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-properties-jvm;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-protobuf;1.6.3 +org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm;1.6.3 +org.jooq:jooq;3.19.8 +org.jooq:jooq-codegen;3.19.8 +org.jooq:jooq-codegen-maven;3.19.8 +org.jooq:jooq-kotlin;3.19.8 +org.jooq:jooq-meta;3.19.8 +org.junit.jupiter:junit-jupiter;5.10.2 +org.junit.jupiter:junit-jupiter-api;5.10.2 +org.junit.jupiter:junit-jupiter-engine;5.10.2 +org.junit.jupiter:junit-jupiter-migrationsupport;5.10.2 +org.junit.jupiter:junit-jupiter-params;5.10.2 +org.junit.platform:junit-platform-commons;1.10.2 +org.junit.platform:junit-platform-console;1.10.2 +org.junit.platform:junit-platform-engine;1.10.2 +org.junit.platform:junit-platform-jfr;1.10.2 +org.junit.platform:junit-platform-launcher;1.10.2 +org.junit.platform:junit-platform-reporting;1.10.2 +org.junit.platform:junit-platform-runner;1.10.2 +org.junit.platform:junit-platform-suite;1.10.2 +org.junit.platform:junit-platform-suite-api;1.10.2 +org.junit.platform:junit-platform-suite-commons;1.10.2 +org.junit.platform:junit-platform-suite-engine;1.10.2 +org.junit.platform:junit-platform-testkit;1.10.2 +org.junit.vintage:junit-vintage-engine;5.10.2 +org.junit:junit-bom;5.10.2 +org.jvnet.staxex:stax-ex;2.1.0 +org.liquibase:liquibase-cdi;4.27.0 +org.liquibase:liquibase-core;4.27.0 +org.liquibase:liquibase-maven-plugin;4.27.0 +org.mariadb.jdbc:mariadb-java-client;3.3.3 +org.mariadb:r2dbc-mariadb;1.2.0 +org.messaginghub:pooled-jms;3.1.6 +org.mockito:mockito-android;5.11.0 +org.mockito:mockito-bom;5.11.0 +org.mockito:mockito-core;5.11.0 +org.mockito:mockito-errorprone;5.11.0 +org.mockito:mockito-junit-jupiter;5.11.0 +org.mockito:mockito-proxy;5.11.0 +org.mockito:mockito-subclass;5.11.0 +org.mongodb:bson;5.0.1 +org.mongodb:bson-record-codec;5.0.1 +org.mongodb:mongodb-driver-core;5.0.1 +org.mongodb:mongodb-driver-legacy;5.0.1 +org.mongodb:mongodb-driver-reactivestreams;5.0.1 +org.mongodb:mongodb-driver-sync;5.0.1 +org.neo4j.driver:neo4j-java-driver;5.20.0 +org.postgresql:postgresql;42.7.3 +org.postgresql:r2dbc-postgresql;1.0.5.RELEASE +org.projectlombok:lombok;1.18.32 +org.quartz-scheduler:quartz;2.3.2 +org.quartz-scheduler:quartz-jobs;2.3.2 +org.reactivestreams:reactive-streams;1.0.4 +org.seleniumhq.selenium:htmlunit-driver;4.13.0 +org.seleniumhq.selenium:selenium-api;4.19.1 +org.seleniumhq.selenium:selenium-bom;4.19.1 +org.seleniumhq.selenium:selenium-chrome-driver;4.19.1 +org.seleniumhq.selenium:selenium-chromium-driver;4.19.1 +org.seleniumhq.selenium:selenium-devtools-v121;4.19.1 +org.seleniumhq.selenium:selenium-devtools-v122;4.19.1 +org.seleniumhq.selenium:selenium-devtools-v123;4.19.1 +org.seleniumhq.selenium:selenium-devtools-v85;4.19.1 +org.seleniumhq.selenium:selenium-edge-driver;4.19.1 +org.seleniumhq.selenium:selenium-firefox-driver;4.19.1 +org.seleniumhq.selenium:selenium-grid;4.19.1 +org.seleniumhq.selenium:selenium-http;4.19.1 +org.seleniumhq.selenium:selenium-ie-driver;4.19.1 +org.seleniumhq.selenium:selenium-java;4.19.1 +org.seleniumhq.selenium:selenium-json;4.19.1 +org.seleniumhq.selenium:selenium-manager;4.19.1 +org.seleniumhq.selenium:selenium-remote-driver;4.19.1 +org.seleniumhq.selenium:selenium-safari-driver;4.19.1 +org.seleniumhq.selenium:selenium-session-map-jdbc;4.19.1 +org.seleniumhq.selenium:selenium-session-map-redis;4.19.1 +org.seleniumhq.selenium:selenium-support;4.19.1 +org.skyscreamer:jsonassert;1.5.1 +org.slf4j:jcl-over-slf4j;2.0.13 +org.slf4j:jul-to-slf4j;2.0.13 +org.slf4j:log4j-over-slf4j;2.0.13 +org.slf4j:slf4j-api;2.0.13 +org.slf4j:slf4j-ext;2.0.13 +org.slf4j:slf4j-jdk-platform-logging;2.0.13 +org.slf4j:slf4j-jdk14;2.0.13 +org.slf4j:slf4j-log4j12;2.0.13 +org.slf4j:slf4j-nop;2.0.13 +org.slf4j:slf4j-reload4j;2.0.13 +org.slf4j:slf4j-simple;2.0.13 +org.springframework.amqp:spring-amqp;3.1.5 +org.springframework.amqp:spring-amqp-bom;3.1.5 +org.springframework.amqp:spring-rabbit;3.1.5 +org.springframework.amqp:spring-rabbit-junit;3.1.5 +org.springframework.amqp:spring-rabbit-stream;3.1.5 +org.springframework.amqp:spring-rabbit-test;3.1.5 +org.springframework.batch:spring-batch-bom;5.1.2 +org.springframework.batch:spring-batch-core;5.1.2 +org.springframework.batch:spring-batch-infrastructure;5.1.2 +org.springframework.batch:spring-batch-integration;5.1.2 +org.springframework.batch:spring-batch-test;5.1.2 +org.springframework.boot:spring-boot;3.3.0 +org.springframework.boot:spring-boot-actuator;3.3.0 +org.springframework.boot:spring-boot-actuator-autoconfigure;3.3.0 +org.springframework.boot:spring-boot-autoconfigure;3.3.0 +org.springframework.boot:spring-boot-autoconfigure-processor;3.3.0 +org.springframework.boot:spring-boot-buildpack-platform;3.3.0 +org.springframework.boot:spring-boot-configuration-metadata;3.3.0 +org.springframework.boot:spring-boot-configuration-processor;3.3.0 +org.springframework.boot:spring-boot-dependencies;3.3.0 +org.springframework.boot:spring-boot-devtools;3.3.0 +org.springframework.boot:spring-boot-docker-compose;3.3.0 +org.springframework.boot:spring-boot-jarmode-tools;3.3.0 +org.springframework.boot:spring-boot-loader;3.3.0 +org.springframework.boot:spring-boot-loader-classic;3.3.0 +org.springframework.boot:spring-boot-loader-tools;3.3.0 +org.springframework.boot:spring-boot-maven-plugin;3.3.0 +org.springframework.boot:spring-boot-properties-migrator;3.3.0 +org.springframework.boot:spring-boot-starter;3.3.0 +org.springframework.boot:spring-boot-starter-activemq;3.3.0 +org.springframework.boot:spring-boot-starter-actuator;3.3.0 +org.springframework.boot:spring-boot-starter-amqp;3.3.0 +org.springframework.boot:spring-boot-starter-aop;3.3.0 +org.springframework.boot:spring-boot-starter-artemis;3.3.0 +org.springframework.boot:spring-boot-starter-batch;3.3.0 +org.springframework.boot:spring-boot-starter-cache;3.3.0 +org.springframework.boot:spring-boot-starter-data-cassandra;3.3.0 +org.springframework.boot:spring-boot-starter-data-cassandra-reactive;3.3.0 +org.springframework.boot:spring-boot-starter-data-couchbase;3.3.0 +org.springframework.boot:spring-boot-starter-data-couchbase-reactive;3.3.0 +org.springframework.boot:spring-boot-starter-data-elasticsearch;3.3.0 +org.springframework.boot:spring-boot-starter-data-jdbc;3.3.0 +org.springframework.boot:spring-boot-starter-data-jpa;3.3.0 +org.springframework.boot:spring-boot-starter-data-ldap;3.3.0 +org.springframework.boot:spring-boot-starter-data-mongodb;3.3.0 +org.springframework.boot:spring-boot-starter-data-mongodb-reactive;3.3.0 +org.springframework.boot:spring-boot-starter-data-neo4j;3.3.0 +org.springframework.boot:spring-boot-starter-data-r2dbc;3.3.0 +org.springframework.boot:spring-boot-starter-data-redis;3.3.0 +org.springframework.boot:spring-boot-starter-data-redis-reactive;3.3.0 +org.springframework.boot:spring-boot-starter-data-rest;3.3.0 +org.springframework.boot:spring-boot-starter-freemarker;3.3.0 +org.springframework.boot:spring-boot-starter-graphql;3.3.0 +org.springframework.boot:spring-boot-starter-groovy-templates;3.3.0 +org.springframework.boot:spring-boot-starter-hateoas;3.3.0 +org.springframework.boot:spring-boot-starter-integration;3.3.0 +org.springframework.boot:spring-boot-starter-jdbc;3.3.0 +org.springframework.boot:spring-boot-starter-jersey;3.3.0 +org.springframework.boot:spring-boot-starter-jetty;3.3.0 +org.springframework.boot:spring-boot-starter-jooq;3.3.0 +org.springframework.boot:spring-boot-starter-json;3.3.0 +org.springframework.boot:spring-boot-starter-log4j2;3.3.0 +org.springframework.boot:spring-boot-starter-logging;3.3.0 +org.springframework.boot:spring-boot-starter-mail;3.3.0 +org.springframework.boot:spring-boot-starter-mustache;3.3.0 +org.springframework.boot:spring-boot-starter-oauth2-authorization-server;3.3.0 +org.springframework.boot:spring-boot-starter-oauth2-client;3.3.0 +org.springframework.boot:spring-boot-starter-oauth2-resource-server;3.3.0 +org.springframework.boot:spring-boot-starter-parent;3.3.0 +org.springframework.boot:spring-boot-starter-pulsar;3.3.0 +org.springframework.boot:spring-boot-starter-pulsar-reactive;3.3.0 +org.springframework.boot:spring-boot-starter-quartz;3.3.0 +org.springframework.boot:spring-boot-starter-reactor-netty;3.3.0 +org.springframework.boot:spring-boot-starter-rsocket;3.3.0 +org.springframework.boot:spring-boot-starter-security;3.3.0 +org.springframework.boot:spring-boot-starter-test;3.3.0 +org.springframework.boot:spring-boot-starter-thymeleaf;3.3.0 +org.springframework.boot:spring-boot-starter-tomcat;3.3.0 +org.springframework.boot:spring-boot-starter-undertow;3.3.0 +org.springframework.boot:spring-boot-starter-validation;3.3.0 +org.springframework.boot:spring-boot-starter-web;3.3.0 +org.springframework.boot:spring-boot-starter-web-services;3.3.0 +org.springframework.boot:spring-boot-starter-webflux;3.3.0 +org.springframework.boot:spring-boot-starter-websocket;3.3.0 +org.springframework.boot:spring-boot-test;3.3.0 +org.springframework.boot:spring-boot-test-autoconfigure;3.3.0 +org.springframework.boot:spring-boot-testcontainers;3.3.0 +org.springframework.cloud:spring-cloud-bus;4.1.1 +org.springframework.cloud:spring-cloud-bus-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-bus-rsocket;4.1.1 +org.springframework.cloud:spring-cloud-circuitbreaker-dependencies;3.1.1 +org.springframework.cloud:spring-cloud-circuitbreaker-resilience4j;3.1.1 +org.springframework.cloud:spring-cloud-circuitbreaker-spring-retry;3.1.1 +org.springframework.cloud:spring-cloud-commons;4.1.2 +org.springframework.cloud:spring-cloud-commons-dependencies;4.1.2 +org.springframework.cloud:spring-cloud-config-client;4.1.1 +org.springframework.cloud:spring-cloud-config-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-config-monitor;4.1.1 +org.springframework.cloud:spring-cloud-config-server;4.1.1 +org.springframework.cloud:spring-cloud-consul-binder;4.1.1 +org.springframework.cloud:spring-cloud-consul-config;4.1.1 +org.springframework.cloud:spring-cloud-consul-core;4.1.1 +org.springframework.cloud:spring-cloud-consul-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-consul-discovery;4.1.1 +org.springframework.cloud:spring-cloud-context;4.1.2 +org.springframework.cloud:spring-cloud-contract-converters;4.1.2 +org.springframework.cloud:spring-cloud-contract-dependencies;4.1.2 +org.springframework.cloud:spring-cloud-contract-gradle-plugin;4.1.2 +org.springframework.cloud:spring-cloud-contract-maven-plugin;4.1.2 +org.springframework.cloud:spring-cloud-contract-shade;4.1.2 +org.springframework.cloud:spring-cloud-contract-spec;4.1.2 +org.springframework.cloud:spring-cloud-contract-spec-groovy;4.1.2 +org.springframework.cloud:spring-cloud-contract-spec-java;4.1.2 +org.springframework.cloud:spring-cloud-contract-spec-kotlin;4.1.2 +org.springframework.cloud:spring-cloud-contract-stub-runner;4.1.2 +org.springframework.cloud:spring-cloud-contract-stub-runner-boot;4.1.2 +org.springframework.cloud:spring-cloud-contract-verifier;4.1.2 +org.springframework.cloud:spring-cloud-contract-wiremock;4.1.2 +org.springframework.cloud:spring-cloud-dependencies;2023.0.1 +org.springframework.cloud:spring-cloud-function-adapter-aws;4.1.1 +org.springframework.cloud:spring-cloud-function-adapter-azure;4.1.1 +org.springframework.cloud:spring-cloud-function-adapter-gcp;4.1.1 +org.springframework.cloud:spring-cloud-function-context;4.1.1 +org.springframework.cloud:spring-cloud-function-core;4.1.1 +org.springframework.cloud:spring-cloud-function-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-function-deployer;4.1.1 +org.springframework.cloud:spring-cloud-function-grpc;4.1.1 +org.springframework.cloud:spring-cloud-function-grpc-cloudevent-ext;4.1.1 +org.springframework.cloud:spring-cloud-function-integration;4.1.1 +org.springframework.cloud:spring-cloud-function-kotlin;4.1.1 +org.springframework.cloud:spring-cloud-function-rsocket;4.1.1 +org.springframework.cloud:spring-cloud-function-serverless-web;4.1.1 +org.springframework.cloud:spring-cloud-function-web;4.1.1 +org.springframework.cloud:spring-cloud-gateway-dependencies;4.1.2 +org.springframework.cloud:spring-cloud-gateway-mvc;4.1.2 +org.springframework.cloud:spring-cloud-gateway-server;4.1.2 +org.springframework.cloud:spring-cloud-gateway-server-mvc;4.1.2 +org.springframework.cloud:spring-cloud-gateway-webflux;4.1.2 +org.springframework.cloud:spring-cloud-kubernetes-client-autoconfig;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-client-config;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-client-discovery;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-client-loadbalancer;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-commons;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-dependencies;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-discovery;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-autoconfig;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-config;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-discovery;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-istio;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-leader;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-fabric8-loadbalancer;3.1.1 +org.springframework.cloud:spring-cloud-kubernetes-test-support;3.1.1 +org.springframework.cloud:spring-cloud-loadbalancer;4.1.2 +org.springframework.cloud:spring-cloud-netflix-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-netflix-eureka-client;4.1.1 +org.springframework.cloud:spring-cloud-netflix-eureka-server;4.1.1 +org.springframework.cloud:spring-cloud-openfeign-core;4.1.1 +org.springframework.cloud:spring-cloud-openfeign-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-starter;4.1.2 +org.springframework.cloud:spring-cloud-starter-bootstrap;4.1.2 +org.springframework.cloud:spring-cloud-starter-bus-amqp;4.1.1 +org.springframework.cloud:spring-cloud-starter-bus-kafka;4.1.1 +org.springframework.cloud:spring-cloud-starter-bus-stream;4.1.1 +org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j;3.1.1 +org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j;3.1.1 +org.springframework.cloud:spring-cloud-starter-circuitbreaker-spring-retry;3.1.1 +org.springframework.cloud:spring-cloud-starter-config;4.1.1 +org.springframework.cloud:spring-cloud-starter-consul;4.1.1 +org.springframework.cloud:spring-cloud-starter-consul-all;4.1.1 +org.springframework.cloud:spring-cloud-starter-consul-bus;4.1.1 +org.springframework.cloud:spring-cloud-starter-consul-config;4.1.1 +org.springframework.cloud:spring-cloud-starter-consul-discovery;4.1.1 +org.springframework.cloud:spring-cloud-starter-contract-stub-runner;4.1.2 +org.springframework.cloud:spring-cloud-starter-contract-stub-runner-jetty;4.1.2 +org.springframework.cloud:spring-cloud-starter-contract-verifier;4.1.2 +org.springframework.cloud:spring-cloud-starter-function-web;4.1.1 +org.springframework.cloud:spring-cloud-starter-function-webflux;4.1.1 +org.springframework.cloud:spring-cloud-starter-gateway;4.1.2 +org.springframework.cloud:spring-cloud-starter-gateway-mvc;4.1.2 +org.springframework.cloud:spring-cloud-starter-kubernetes-client;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-client-all;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-client-config;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-client-loadbalancer;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-discoveryclient;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-all;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-config;3.1.1 +org.springframework.cloud:spring-cloud-starter-kubernetes-fabric8-loadbalancer;3.1.1 +org.springframework.cloud:spring-cloud-starter-loadbalancer;4.1.2 +org.springframework.cloud:spring-cloud-starter-netflix-eureka-client;4.1.1 +org.springframework.cloud:spring-cloud-starter-netflix-eureka-server;4.1.1 +org.springframework.cloud:spring-cloud-starter-openfeign;4.1.1 +org.springframework.cloud:spring-cloud-starter-stream-kafka;4.1.1 +org.springframework.cloud:spring-cloud-starter-stream-rabbit;4.1.1 +org.springframework.cloud:spring-cloud-starter-task;3.1.1 +org.springframework.cloud:spring-cloud-starter-vault-config;4.1.1 +org.springframework.cloud:spring-cloud-starter-zookeeper;4.1.1 +org.springframework.cloud:spring-cloud-starter-zookeeper-all;4.1.1 +org.springframework.cloud:spring-cloud-starter-zookeeper-config;4.1.1 +org.springframework.cloud:spring-cloud-starter-zookeeper-discovery;4.1.1 +org.springframework.cloud:spring-cloud-stream;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka-core;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka-reactive;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-kafka-streams;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-pulsar;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-rabbit;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-rabbit-core;4.1.1 +org.springframework.cloud:spring-cloud-stream-binder-rabbit-test-support;4.1.1 +org.springframework.cloud:spring-cloud-stream-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-stream-schema-registry-client;4.1.1 +org.springframework.cloud:spring-cloud-stream-schema-registry-core;4.1.1 +org.springframework.cloud:spring-cloud-stream-schema-registry-server;4.1.1 +org.springframework.cloud:spring-cloud-stream-test-binder;4.1.1 +org.springframework.cloud:spring-cloud-stream-test-support;4.1.1 +org.springframework.cloud:spring-cloud-task-batch;3.1.1 +org.springframework.cloud:spring-cloud-task-core;3.1.1 +org.springframework.cloud:spring-cloud-task-dependencies;3.1.1 +org.springframework.cloud:spring-cloud-task-stream;3.1.1 +org.springframework.cloud:spring-cloud-test-support;4.1.2 +org.springframework.cloud:spring-cloud-vault-config;4.1.1 +org.springframework.cloud:spring-cloud-vault-config-aws;4.1.1 +org.springframework.cloud:spring-cloud-vault-config-consul;4.1.1 +org.springframework.cloud:spring-cloud-vault-config-databases;4.1.1 +org.springframework.cloud:spring-cloud-vault-config-rabbitmq;4.1.1 +org.springframework.cloud:spring-cloud-vault-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-zookeeper-config;4.1.1 +org.springframework.cloud:spring-cloud-zookeeper-core;4.1.1 +org.springframework.cloud:spring-cloud-zookeeper-dependencies;4.1.1 +org.springframework.cloud:spring-cloud-zookeeper-discovery;4.1.1 +org.springframework.credhub:spring-credhub-core;2.1.1.RELEASE +org.springframework.data:spring-data-bom;2024.0.0 +org.springframework.data:spring-data-cassandra;4.3.0 +org.springframework.data:spring-data-commons;3.3.0 +org.springframework.data:spring-data-couchbase;5.3.0 +org.springframework.data:spring-data-elasticsearch;5.3.0 +org.springframework.data:spring-data-envers;3.3.0 +org.springframework.data:spring-data-jdbc;3.3.0 +org.springframework.data:spring-data-jpa;3.3.0 +org.springframework.data:spring-data-keyvalue;3.3.0 +org.springframework.data:spring-data-ldap;3.3.0 +org.springframework.data:spring-data-mongodb;4.3.0 +org.springframework.data:spring-data-neo4j;7.3.0 +org.springframework.data:spring-data-r2dbc;3.3.0 +org.springframework.data:spring-data-redis;3.3.0 +org.springframework.data:spring-data-relational;3.3.0 +org.springframework.data:spring-data-rest-core;4.3.0 +org.springframework.data:spring-data-rest-hal-explorer;4.3.0 +org.springframework.data:spring-data-rest-webmvc;4.3.0 +org.springframework.graphql:spring-graphql;1.3.0 +org.springframework.graphql:spring-graphql-test;1.3.0 +org.springframework.hateoas:spring-hateoas;2.3.0 +org.springframework.integration:spring-integration-amqp;6.3.0 +org.springframework.integration:spring-integration-bom;6.3.0 +org.springframework.integration:spring-integration-camel;6.3.0 +org.springframework.integration:spring-integration-cassandra;6.3.0 +org.springframework.integration:spring-integration-core;6.3.0 +org.springframework.integration:spring-integration-debezium;6.3.0 +org.springframework.integration:spring-integration-event;6.3.0 +org.springframework.integration:spring-integration-feed;6.3.0 +org.springframework.integration:spring-integration-file;6.3.0 +org.springframework.integration:spring-integration-ftp;6.3.0 +org.springframework.integration:spring-integration-graphql;6.3.0 +org.springframework.integration:spring-integration-groovy;6.3.0 +org.springframework.integration:spring-integration-hazelcast;6.3.0 +org.springframework.integration:spring-integration-http;6.3.0 +org.springframework.integration:spring-integration-ip;6.3.0 +org.springframework.integration:spring-integration-jdbc;6.3.0 +org.springframework.integration:spring-integration-jms;6.3.0 +org.springframework.integration:spring-integration-jmx;6.3.0 +org.springframework.integration:spring-integration-jpa;6.3.0 +org.springframework.integration:spring-integration-kafka;6.3.0 +org.springframework.integration:spring-integration-mail;6.3.0 +org.springframework.integration:spring-integration-mongodb;6.3.0 +org.springframework.integration:spring-integration-mqtt;6.3.0 +org.springframework.integration:spring-integration-r2dbc;6.3.0 +org.springframework.integration:spring-integration-redis;6.3.0 +org.springframework.integration:spring-integration-rsocket;6.3.0 +org.springframework.integration:spring-integration-scripting;6.3.0 +org.springframework.integration:spring-integration-sftp;6.3.0 +org.springframework.integration:spring-integration-smb;6.3.0 +org.springframework.integration:spring-integration-stomp;6.3.0 +org.springframework.integration:spring-integration-stream;6.3.0 +org.springframework.integration:spring-integration-syslog;6.3.0 +org.springframework.integration:spring-integration-test;6.3.0 +org.springframework.integration:spring-integration-test-support;6.3.0 +org.springframework.integration:spring-integration-webflux;6.3.0 +org.springframework.integration:spring-integration-websocket;6.3.0 +org.springframework.integration:spring-integration-ws;6.3.0 +org.springframework.integration:spring-integration-xml;6.3.0 +org.springframework.integration:spring-integration-xmpp;6.3.0 +org.springframework.integration:spring-integration-zeromq;6.3.0 +org.springframework.integration:spring-integration-zip;6.3.0 +org.springframework.integration:spring-integration-zookeeper;6.3.0 +org.springframework.kafka:spring-kafka;3.2.0 +org.springframework.kafka:spring-kafka-test;3.2.0 +org.springframework.ldap:spring-ldap-core;3.2.3 +org.springframework.ldap:spring-ldap-ldif-core;3.2.3 +org.springframework.ldap:spring-ldap-odm;3.2.3 +org.springframework.ldap:spring-ldap-test;3.2.3 +org.springframework.pulsar:spring-pulsar;1.1.0 +org.springframework.pulsar:spring-pulsar-bom;1.1.0 +org.springframework.pulsar:spring-pulsar-cache-provider;1.1.0 +org.springframework.pulsar:spring-pulsar-cache-provider-caffeine;1.1.0 +org.springframework.pulsar:spring-pulsar-reactive;1.1.0 +org.springframework.pulsar:spring-pulsar-test;1.1.0 +org.springframework.restdocs:spring-restdocs-asciidoctor;3.0.1 +org.springframework.restdocs:spring-restdocs-bom;3.0.1 +org.springframework.restdocs:spring-restdocs-core;3.0.1 +org.springframework.restdocs:spring-restdocs-mockmvc;3.0.1 +org.springframework.restdocs:spring-restdocs-restassured;3.0.1 +org.springframework.restdocs:spring-restdocs-webtestclient;3.0.1 +org.springframework.retry:spring-retry;2.0.6 +org.springframework.security:spring-security-acl;6.3.0 +org.springframework.security:spring-security-aspects;6.3.0 +org.springframework.security:spring-security-bom;6.3.0 +org.springframework.security:spring-security-cas;6.3.0 +org.springframework.security:spring-security-config;6.3.0 +org.springframework.security:spring-security-core;6.3.0 +org.springframework.security:spring-security-crypto;6.3.0 +org.springframework.security:spring-security-data;6.3.0 +org.springframework.security:spring-security-ldap;6.3.0 +org.springframework.security:spring-security-messaging;6.3.0 +org.springframework.security:spring-security-oauth2-authorization-server;1.3.0 +org.springframework.security:spring-security-oauth2-client;6.3.0 +org.springframework.security:spring-security-oauth2-core;6.3.0 +org.springframework.security:spring-security-oauth2-jose;6.3.0 +org.springframework.security:spring-security-oauth2-resource-server;6.3.0 +org.springframework.security:spring-security-rsa;1.1.2 +org.springframework.security:spring-security-rsocket;6.3.0 +org.springframework.security:spring-security-saml2-service-provider;6.3.0 +org.springframework.security:spring-security-taglibs;6.3.0 +org.springframework.security:spring-security-test;6.3.0 +org.springframework.security:spring-security-web;6.3.0 +org.springframework.session:spring-session-bom;3.3.0 +org.springframework.session:spring-session-core;3.3.0 +org.springframework.session:spring-session-data-mongodb;3.3.0 +org.springframework.session:spring-session-data-redis;3.3.0 +org.springframework.session:spring-session-hazelcast;3.3.0 +org.springframework.session:spring-session-jdbc;3.3.0 +org.springframework.vault:spring-vault-core;3.1.1 +org.springframework.ws:spring-ws-bom;4.0.11 +org.springframework.ws:spring-ws-core;4.0.11 +org.springframework.ws:spring-ws-security;4.0.11 +org.springframework.ws:spring-ws-support;4.0.11 +org.springframework.ws:spring-ws-test;4.0.11 +org.springframework.ws:spring-xml;4.0.11 +org.springframework:spring-aop;6.1.8 +org.springframework:spring-aspects;6.1.8 +org.springframework:spring-beans;6.1.8 +org.springframework:spring-context;6.1.8 +org.springframework:spring-context-indexer;6.1.8 +org.springframework:spring-context-support;6.1.8 +org.springframework:spring-core;6.1.8 +org.springframework:spring-core-test;6.1.8 +org.springframework:spring-expression;6.1.8 +org.springframework:spring-framework-bom;6.1.8 +org.springframework:spring-instrument;6.1.8 +org.springframework:spring-jcl;6.1.8 +org.springframework:spring-jdbc;6.1.8 +org.springframework:spring-jms;6.1.8 +org.springframework:spring-messaging;6.1.8 +org.springframework:spring-orm;6.1.8 +org.springframework:spring-oxm;6.1.8 +org.springframework:spring-r2dbc;6.1.8 +org.springframework:spring-test;6.1.8 +org.springframework:spring-tx;6.1.8 +org.springframework:spring-web;6.1.8 +org.springframework:spring-webflux;6.1.8 +org.springframework:spring-webmvc;6.1.8 +org.springframework:spring-websocket;6.1.8 +org.testcontainers:activemq;1.19.8 +org.testcontainers:azure;1.19.8 +org.testcontainers:cassandra;1.19.8 +org.testcontainers:chromadb;1.19.8 +org.testcontainers:clickhouse;1.19.8 +org.testcontainers:cockroachdb;1.19.8 +org.testcontainers:consul;1.19.8 +org.testcontainers:couchbase;1.19.8 +org.testcontainers:cratedb;1.19.8 +org.testcontainers:database-commons;1.19.8 +org.testcontainers:db2;1.19.8 +org.testcontainers:dynalite;1.19.8 +org.testcontainers:elasticsearch;1.19.8 +org.testcontainers:gcloud;1.19.8 +org.testcontainers:hivemq;1.19.8 +org.testcontainers:influxdb;1.19.8 +org.testcontainers:jdbc;1.19.8 +org.testcontainers:junit-jupiter;1.19.8 +org.testcontainers:k3s;1.19.8 +org.testcontainers:k6;1.19.8 +org.testcontainers:kafka;1.19.8 +org.testcontainers:localstack;1.19.8 +org.testcontainers:mariadb;1.19.8 +org.testcontainers:milvus;1.19.8 +org.testcontainers:minio;1.19.8 +org.testcontainers:mockserver;1.19.8 +org.testcontainers:mongodb;1.19.8 +org.testcontainers:mssqlserver;1.19.8 +org.testcontainers:mysql;1.19.8 +org.testcontainers:neo4j;1.19.8 +org.testcontainers:nginx;1.19.8 +org.testcontainers:oceanbase;1.19.8 +org.testcontainers:ollama;1.19.8 +org.testcontainers:openfga;1.19.8 +org.testcontainers:oracle-free;1.19.8 +org.testcontainers:oracle-xe;1.19.8 +org.testcontainers:orientdb;1.19.8 +org.testcontainers:postgresql;1.19.8 +org.testcontainers:presto;1.19.8 +org.testcontainers:pulsar;1.19.8 +org.testcontainers:qdrant;1.19.8 +org.testcontainers:questdb;1.19.8 +org.testcontainers:r2dbc;1.19.8 +org.testcontainers:rabbitmq;1.19.8 +org.testcontainers:redpanda;1.19.8 +org.testcontainers:selenium;1.19.8 +org.testcontainers:solace;1.19.8 +org.testcontainers:solr;1.19.8 +org.testcontainers:spock;1.19.8 +org.testcontainers:testcontainers;1.19.8 +org.testcontainers:testcontainers-bom;1.19.8 +org.testcontainers:tidb;1.19.8 +org.testcontainers:toxiproxy;1.19.8 +org.testcontainers:trino;1.19.8 +org.testcontainers:vault;1.19.8 +org.testcontainers:weaviate;1.19.8 +org.testcontainers:yugabytedb;1.19.8 +org.thymeleaf.extras:thymeleaf-extras-springsecurity6;3.1.2.RELEASE +org.thymeleaf:thymeleaf;3.1.2.RELEASE +org.thymeleaf:thymeleaf-spring6;3.1.2.RELEASE +org.tmatesoft.svnkit:svnkit;1.10.1 +org.webjars:webjars-locator-core;0.58 +org.wiremock:wiremock-standalone;3.4.2 +org.xerial:sqlite-jdbc;3.45.3.0 +org.xmlunit:xmlunit-assertj;2.9.1 +org.xmlunit:xmlunit-assertj3;2.9.1 +org.xmlunit:xmlunit-core;2.9.1 +org.xmlunit:xmlunit-jakarta-jaxb-impl;2.9.1 +org.xmlunit:xmlunit-legacy;2.9.1 +org.xmlunit:xmlunit-matchers;2.9.1 +org.xmlunit:xmlunit-placeholders;2.9.1 +org.yaml:snakeyaml;2.2 +redis.clients:jedis;5.0.2 +wsdl4j:wsdl4j;1.6.3 diff --git a/sdk/spring/scripts/spring_monitor_version_substitution.py b/sdk/spring/scripts/spring_monitor_version_substitution.py deleted file mode 100644 index f519f74ee926..000000000000 --- a/sdk/spring/scripts/spring_monitor_version_substitution.py +++ /dev/null @@ -1,58 +0,0 @@ -# Python version 3.4 or higher is required to run this script. -# -# This script is used to update sdk\spring\spring-cloud-azure-starter-monitor-test\pom.xml before compatibility check. -# Sample: -# 1. python .\sdk\spring\scripts\spring_monitor_version_substitution.py -b 3.1.2 -# -# The script must be run at the root of azure-sdk-for-java. - - -import time -from log import log -import os -import argparse -import re -import xml.etree.ElementTree as ET - - -def replace_version(file_path, current_version, new_version): - with open(file_path, 'r') as file: - lines = file.readlines() - - with open(file_path, 'w') as file: - for line in lines: - if ' + 5.14.0-beta.1 Spring Cloud Azure Actuator AutoConfigure Spring Cloud Azure Starter Actuator AutoConfigure @@ -32,28 +32,36 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + org.springframework.boot spring-boot-actuator-autoconfigure - 2.7.18 + 3.3.0 compile + + com.fasterxml.jackson.core + jackson-databind + 2.17.1 + com.azure.spring spring-cloud-azure-actuator - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-autoconfigure - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-appconfiguration-config-web - 4.20.0-beta.1 + 5.14.0-beta.1 true @@ -119,13 +127,15 @@ org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 test + + org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -133,19 +143,82 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -154,8 +227,9 @@ - org.springframework.boot:spring-boot-actuator:[2.7.18] - org.springframework.boot:spring-boot-actuator-autoconfigure:[2.7.18] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + org.springframework.boot:spring-boot-actuator:[3.3.0] + org.springframework.boot:spring-boot-actuator-autoconfigure:[3.3.0] @@ -164,7 +238,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -172,6 +246,72 @@ + + + + + empty-javadoc-jar-with-readme + package + + jar + + + javadoc + ${project.basedir}/javadocTemp + + + + empty-source-jar-with-readme + package + + jar + + + sources + ${project.basedir}/sourceTemp + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.1.0 + + + copy-readme-to-javadocTemp-and-sourceTemp + prepare-package + + + Deleting existing ${project.basedir}/javadocTemp and + ${project.basedir}/sourceTemp + + + + + Copying ${project.basedir}/../README.md to + ${project.basedir}/javadocTemp/README.md + + + Copying ${project.basedir}/../README.md to + ${project.basedir}/sourceTemp/README.md + + + + + + run + + + + diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/package-info.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/package-info.java deleted file mode 100644 index fcc708e411ad..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure auto-configuration for actuator App Configuration concerns. - */ -package com.azure.spring.cloud.actuator.autoconfigure.appconfiguration; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/package-info.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/package-info.java deleted file mode 100644 index bf2473a3cd94..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure auto-configuration for actuator Cosmos concerns. - */ -package com.azure.spring.cloud.actuator.autoconfigure.cosmos; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/package-info.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/package-info.java deleted file mode 100644 index afeb3a7a6ad0..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure auto-configuration for actuator Event Hubs concerns. - */ -package com.azure.spring.cloud.actuator.autoconfigure.eventhubs; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationConfigHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationConfigHealthConfiguration.java index 14aff7569229..976088cbcf9a 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationConfigHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationConfigHealthConfiguration.java @@ -1,5 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. + package com.azure.spring.cloud.actuator.autoconfigure.implementation.appconfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; @@ -10,17 +11,20 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.azure.spring.cloud.actuator.appconfiguration.AppConfigurationConfigHealthIndicator; +import com.azure.data.appconfiguration.ConfigurationAsyncClient; +import com.azure.spring.cloud.actuator.implementation.appconfiguration.AppConfigurationConfigHealthIndicator; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationRefresh; -import com.azure.spring.cloud.appconfiguration.config.AppConfigurationAutoConfiguration.AppConfigurationWatchAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationAutoConfiguration; + /** - * Health Indicator for Azure App Configuration store connections. + * Configuration class of App Configuration Health */ -@Configuration -@ConditionalOnClass({ HealthIndicator.class }) -@ConditionalOnEnabledHealthIndicator("azure-app-configuration") -@AutoConfigureAfter(AppConfigurationWatchAutoConfiguration.class) +@Configuration(proxyBeanMethods = false) +@ConditionalOnClass({ ConfigurationAsyncClient.class, HealthIndicator.class }) +@ConditionalOnBean(ConfigurationAsyncClient.class) +@AutoConfigureAfter(AzureAppConfigurationAutoConfiguration.class) +@ConditionalOnEnabledHealthIndicator("azure-appconfiguration") public class AppConfigurationConfigHealthConfiguration { @Bean @@ -28,5 +32,4 @@ public class AppConfigurationConfigHealthConfiguration { AppConfigurationConfigHealthIndicator appConfigurationHealthIndicator(AppConfigurationRefresh refresh) { return new AppConfigurationConfigHealthIndicator(refresh); } - } diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/AppConfigurationHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationHealthConfiguration.java similarity index 80% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/AppConfigurationHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationHealthConfiguration.java index cdff7ab4639d..d633b5e331bf 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/AppConfigurationHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationHealthConfiguration.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.appconfiguration; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.appconfiguration; import com.azure.data.appconfiguration.ConfigurationAsyncClient; -import com.azure.spring.cloud.actuator.appconfiguration.AppConfigurationHealthIndicator; -import com.azure.spring.cloud.autoconfigure.appconfiguration.AzureAppConfigurationAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.appconfiguration.AppConfigurationHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigureAfter; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/package-info.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/package-info.java deleted file mode 100644 index 743e26477894..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure auto-configuration for actuator App Configuration concerns. - */ -package com.azure.spring.cloud.actuator.autoconfigure.implementation.appconfiguration; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/CosmosHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/cosmos/CosmosHealthConfiguration.java similarity index 85% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/CosmosHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/cosmos/CosmosHealthConfiguration.java index 23b5d20a2a1f..d26b7a15a877 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/CosmosHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/cosmos/CosmosHealthConfiguration.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.cosmos; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.cosmos; import com.azure.cosmos.CosmosAsyncClient; -import com.azure.spring.cloud.actuator.cosmos.CosmosHealthIndicator; -import com.azure.spring.cloud.autoconfigure.cosmos.AzureCosmosAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.cosmos.CosmosHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.cosmos.AzureCosmosAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/EventHubsHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/eventhubs/EventHubsHealthConfiguration.java similarity index 85% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/EventHubsHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/eventhubs/EventHubsHealthConfiguration.java index f01d6084b730..048c4318315d 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/EventHubsHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/eventhubs/EventHubsHealthConfiguration.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.eventhubs; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventHubConsumerAsyncClient; import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; -import com.azure.spring.cloud.actuator.eventhubs.EventHubsHealthIndicator; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.eventhubs.EventHubsHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultCertificateHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultCertificateHealthConfiguration.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultCertificateHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultCertificateHealthConfiguration.java index 034e76203915..8958fd052e7e 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultCertificateHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultCertificateHealthConfiguration.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.keyvault; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.keyvault; import com.azure.security.keyvault.certificates.CertificateAsyncClient; -import com.azure.spring.cloud.actuator.keyvault.KeyVaultCertificateHealthIndicator; -import com.azure.spring.cloud.autoconfigure.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.keyvault.KeyVaultCertificateHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigureAfter; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultSecretHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultSecretHealthConfiguration.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultSecretHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultSecretHealthConfiguration.java index 0b22218639bf..e432b3fd0df0 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultSecretHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultSecretHealthConfiguration.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.keyvault; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.keyvault; import com.azure.security.keyvault.secrets.SecretAsyncClient; -import com.azure.spring.cloud.actuator.keyvault.KeyVaultSecretHealthIndicator; -import com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.keyvault.KeyVaultSecretHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigureAfter; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageBlobHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageBlobHealthConfiguration.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageBlobHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageBlobHealthConfiguration.java index a9c8ff967ede..194b23d55303 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageBlobHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageBlobHealthConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.storage; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.storage; -import com.azure.spring.cloud.actuator.storage.StorageBlobHealthIndicator; -import com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.storage.StorageBlobHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; import com.azure.storage.blob.BlobServiceAsyncClient; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageFileShareHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageFileShareHealthConfiguration.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageFileShareHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageFileShareHealthConfiguration.java index 64fc74e54165..36bd8867ce73 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageFileShareHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageFileShareHealthConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.storage; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.storage; -import com.azure.spring.cloud.actuator.storage.StorageFileShareHealthIndicator; -import com.azure.spring.cloud.autoconfigure.storage.fileshare.AzureStorageFileShareAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.storage.StorageFileShareHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.AzureStorageFileShareAutoConfiguration; import com.azure.storage.file.share.ShareServiceAsyncClient; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageQueueHealthConfiguration.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageQueueHealthConfiguration.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageQueueHealthConfiguration.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageQueueHealthConfiguration.java index 5dbb36f54186..2458921f9018 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageQueueHealthConfiguration.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageQueueHealthConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.storage; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.storage; -import com.azure.spring.cloud.actuator.storage.StorageQueueHealthIndicator; -import com.azure.spring.cloud.autoconfigure.storage.queue.AzureStorageQueueAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.storage.StorageQueueHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration; import com.azure.storage.queue.QueueServiceAsyncClient; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthIndicator; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/package-info.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/package-info.java deleted file mode 100644 index b9d173a67a78..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure auto-configuration for actuator Key Vault concerns. - */ -package com.azure.spring.cloud.actuator.autoconfigure.keyvault; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/package-info.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/package-info.java deleted file mode 100644 index ab5dc7593cb3..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/java/com/azure/spring/cloud/actuator/autoconfigure/storage/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure auto-configuration for actuator Storage concerns. - */ -package com.azure.spring.cloud.actuator.autoconfigure.storage; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 523a6ca4c66a..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,9 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.azure.spring.cloud.actuator.autoconfigure.appconfiguration.AppConfigurationHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.cosmos.CosmosHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.eventhubs.EventHubsHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.keyvault.KeyVaultSecretHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.keyvault.KeyVaultCertificateHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.storage.StorageBlobHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.storage.StorageFileShareHealthConfiguration,\ -com.azure.spring.cloud.actuator.autoconfigure.storage.StorageQueueHealthConfiguration diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..beebf3e49921 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,8 @@ +com.azure.spring.cloud.actuator.autoconfigure.implementation.appconfiguration.AppConfigurationHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.cosmos.CosmosHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.eventhubs.EventHubsHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.keyvault.KeyVaultSecretHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.keyvault.KeyVaultCertificateHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.storage.StorageBlobHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.storage.StorageFileShareHealthConfiguration +com.azure.spring.cloud.actuator.autoconfigure.implementation.storage.StorageQueueHealthConfiguration diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/AppConfigurationHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationHealthConfigurationTests.java similarity index 75% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/AppConfigurationHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationHealthConfigurationTests.java index af4b37041f2e..972a9bd18ba9 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/appconfiguration/AppConfigurationHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/appconfiguration/AppConfigurationHealthConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.appconfiguration; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.appconfiguration; -import com.azure.spring.cloud.actuator.appconfiguration.AppConfigurationHealthIndicator; -import com.azure.spring.cloud.autoconfigure.appconfiguration.AzureAppConfigurationAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.actuator.implementation.appconfiguration.AppConfigurationHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/CosmosHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/cosmos/CosmosHealthConfigurationTests.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/CosmosHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/cosmos/CosmosHealthConfigurationTests.java index 0de4073ff892..01bace8d99f5 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/cosmos/CosmosHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/cosmos/CosmosHealthConfigurationTests.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.cosmos; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.cosmos; import com.azure.cosmos.CosmosAsyncClient; import com.azure.cosmos.CosmosClientBuilder; -import com.azure.spring.cloud.actuator.cosmos.CosmosHealthIndicator; -import com.azure.spring.cloud.autoconfigure.cosmos.AzureCosmosAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.actuator.implementation.cosmos.CosmosHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.cosmos.AzureCosmosAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/EventHubsHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/eventhubs/EventHubsHealthConfigurationTests.java similarity index 81% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/EventHubsHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/eventhubs/EventHubsHealthConfigurationTests.java index c6463795eab2..581365263fe2 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/eventhubs/EventHubsHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/eventhubs/EventHubsHealthConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.eventhubs; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.actuator.eventhubs.EventHubsHealthIndicator; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.actuator.implementation.eventhubs.EventHubsHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultCertificateHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultCertificateHealthConfigurationTests.java similarity index 76% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultCertificateHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultCertificateHealthConfigurationTests.java index 2b204c7a83f4..b13ea6bba0ff 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultCertificateHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultCertificateHealthConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.keyvault; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.keyvault; -import com.azure.spring.cloud.actuator.keyvault.KeyVaultCertificateHealthIndicator; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.keyvault.KeyVaultCertificateHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultSecretHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultSecretHealthConfigurationTests.java similarity index 77% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultSecretHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultSecretHealthConfigurationTests.java index 795b44f9ad0a..947d810da615 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/keyvault/KeyVaultSecretHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/keyvault/KeyVaultSecretHealthConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.keyvault; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.keyvault; -import com.azure.spring.cloud.actuator.keyvault.KeyVaultSecretHealthIndicator; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.keyvault.KeyVaultSecretHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageBlobHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageBlobHealthConfigurationTests.java similarity index 75% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageBlobHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageBlobHealthConfigurationTests.java index 1e07d37f1c2b..a9ac50d9a673 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageBlobHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageBlobHealthConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.storage; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.storage; -import com.azure.spring.cloud.actuator.storage.StorageBlobHealthIndicator; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.storage.StorageBlobHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageFileShareHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageFileShareHealthConfigurationTests.java similarity index 90% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageFileShareHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageFileShareHealthConfigurationTests.java index b6536e72a957..4553221ddbf8 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageFileShareHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageFileShareHealthConfigurationTests.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.storage; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.storage; -import com.azure.spring.cloud.actuator.storage.StorageFileShareHealthIndicator; +import com.azure.spring.cloud.actuator.implementation.storage.StorageFileShareHealthIndicator; import com.azure.storage.file.share.ShareServiceAsyncClient; import org.junit.jupiter.api.Test; import org.mockito.Mockito; diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageQueueHealthConfigurationTests.java b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageQueueHealthConfigurationTests.java similarity index 75% rename from sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageQueueHealthConfigurationTests.java rename to sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageQueueHealthConfigurationTests.java index b5de9b3ac38c..422bc148ba85 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/storage/StorageQueueHealthConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/src/test/java/com/azure/spring/cloud/actuator/autoconfigure/implementation/storage/StorageQueueHealthConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.autoconfigure.storage; +package com.azure.spring.cloud.actuator.autoconfigure.implementation.storage; -import com.azure.spring.cloud.actuator.storage.StorageQueueHealthIndicator; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.storage.queue.AzureStorageQueueAutoConfiguration; +import com.azure.spring.cloud.actuator.implementation.storage.StorageQueueHealthIndicator; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md b/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md index 87056a4f02ff..3485bcbccd9d 100644 --- a/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,10 +99,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. @@ -66,14 +123,30 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-actuator/pom.xml b/sdk/spring/spring-cloud-azure-actuator/pom.xml index 86dd635477d0..360027c2aeb8 100644 --- a/sdk/spring/spring-cloud-azure-actuator/pom.xml +++ b/sdk/spring/spring-cloud-azure-actuator/pom.xml @@ -17,7 +17,7 @@ com.azure.spring spring-cloud-azure-actuator - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Actuator https://microsoft.github.io/spring-cloud-azure @@ -36,12 +36,15 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + org.springframework.boot spring-boot-actuator - 2.7.18 + 3.3.0 compile @@ -103,22 +106,24 @@ true - com.azure.spring - spring-cloud-azure-appconfiguration-config-web - 4.20.0-beta.1 + com.azure.spring + spring-cloud-azure-appconfiguration-config-web + 5.14.0-beta.1 true org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 test + + org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -126,19 +131,82 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -147,7 +215,7 @@ - org.springframework.boot:spring-boot-actuator:[2.7.18] + org.springframework.boot:spring-boot-actuator:[3.3.0] @@ -156,7 +224,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -164,6 +232,72 @@ + + + + + empty-javadoc-jar-with-readme + package + + jar + + + javadoc + ${project.basedir}/javadocTemp + + + + empty-source-jar-with-readme + package + + jar + + + sources + ${project.basedir}/sourceTemp + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.1.0 + + + copy-readme-to-javadocTemp-and-sourceTemp + prepare-package + + + Deleting existing ${project.basedir}/javadocTemp and + ${project.basedir}/sourceTemp + + + + + Copying ${project.basedir}/../README.md to + ${project.basedir}/javadocTemp/README.md + + + Copying ${project.basedir}/../README.md to + ${project.basedir}/sourceTemp/README.md + + + + + + run + + + + diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/package-info.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/package-info.java deleted file mode 100644 index bdfb42d481a2..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure Actuator support for App Configuration. - */ -package com.azure.spring.cloud.actuator.appconfiguration; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/package-info.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/package-info.java deleted file mode 100644 index cd5ada61627c..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure Actuator support for Cosmos. - */ -package com.azure.spring.cloud.actuator.cosmos; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/eventhubs/package-info.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/eventhubs/package-info.java deleted file mode 100644 index bbdbd921408f..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/eventhubs/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure Actuator support for Event Hubs. - */ -package com.azure.spring.cloud.actuator.eventhubs; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationConfigHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationConfigHealthIndicator.java similarity index 60% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationConfigHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationConfigHealthIndicator.java index 4e83d52baeba..cdfa7ca638fe 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationConfigHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationConfigHealthIndicator.java @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.appconfiguration; -import org.springframework.boot.actuate.health.Health; -import org.springframework.boot.actuate.health.HealthIndicator; +package com.azure.spring.cloud.actuator.implementation.appconfiguration; + +import org.springframework.boot.actuate.health.AbstractHealthIndicator; +import org.springframework.boot.actuate.health.Health.Builder; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationRefresh; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationStoreHealth; @@ -11,7 +12,7 @@ /** * Indicator class of App Configuration */ -public final class AppConfigurationConfigHealthIndicator implements HealthIndicator { +public class AppConfigurationConfigHealthIndicator extends AbstractHealthIndicator { private final AppConfigurationRefresh refresh; @@ -24,26 +25,23 @@ public AppConfigurationConfigHealthIndicator(AppConfigurationRefresh refresh) { } @Override - public Health health() { - Health.Builder healthBuilder = new Health.Builder(); + protected void doHealthCheck(Builder builder) throws Exception { boolean healthy = true; for (String store : refresh.getAppConfigurationStoresHealth().keySet()) { if (AppConfigurationStoreHealth.DOWN.equals(refresh.getAppConfigurationStoresHealth().get(store))) { healthy = false; - healthBuilder.withDetail(store, AppConfigurationStoreHealth.DOWN.toString()); + builder.withDetail(store, "DOWN"); } else if (AppConfigurationStoreHealth.NOT_LOADED .equals(refresh.getAppConfigurationStoresHealth().get(store))) { - healthBuilder.withDetail(store, AppConfigurationStoreHealth.NOT_LOADED.toString()); + builder.withDetail(store, "NOT LOADED"); } else { - healthBuilder.withDetail(store, AppConfigurationStoreHealth.UP.toString()); + builder.withDetail(store, "UP"); } } - if (!healthy) { - return healthBuilder.down().build(); + builder.down(); } - return healthBuilder.up().build(); + builder.up(); } - } diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationHealthIndicator.java similarity index 95% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationHealthIndicator.java index b19def89e36d..6b08d540c4fd 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.appconfiguration; +package com.azure.spring.cloud.actuator.implementation.appconfiguration; import com.azure.core.exception.ResourceNotFoundException; import com.azure.data.appconfiguration.ConfigurationAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthConstants.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthConstants.java similarity index 82% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthConstants.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthConstants.java index 6fa5db659fe1..426c233a1adb 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthConstants.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthConstants.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.cosmos; +package com.azure.spring.cloud.actuator.implementation.cosmos; /** * Azure Cosmos actuator related constants. diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthIndicator.java similarity index 94% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthIndicator.java index 320fced963d4..9f89d7465f98 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.cosmos; +package com.azure.spring.cloud.actuator.implementation.cosmos; import com.azure.cosmos.CosmosAsyncClient; import com.azure.cosmos.models.CosmosDatabaseResponse; @@ -15,7 +15,7 @@ import java.time.Duration; -import static com.azure.spring.cloud.actuator.cosmos.CosmosHealthConstants.DATA_BASE_FIELD; +import static com.azure.spring.cloud.actuator.implementation.cosmos.CosmosHealthConstants.DATA_BASE_FIELD; import static com.azure.spring.cloud.actuator.implementation.util.ActuateConstants.DEFAULT_HEALTH_CHECK_TIMEOUT; /** diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/eventhubs/EventHubsHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/eventhubs/EventHubsHealthIndicator.java similarity index 97% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/eventhubs/EventHubsHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/eventhubs/EventHubsHealthIndicator.java index d69425a30b7d..68395918439b 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/eventhubs/EventHubsHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/eventhubs/EventHubsHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.eventhubs; +package com.azure.spring.cloud.actuator.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubConsumerAsyncClient; import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultCertificateHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultCertificateHealthIndicator.java similarity index 96% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultCertificateHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultCertificateHealthIndicator.java index b797279e7349..2690407ef4a3 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultCertificateHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultCertificateHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.keyvault; +package com.azure.spring.cloud.actuator.implementation.keyvault; import com.azure.core.exception.ResourceNotFoundException; import com.azure.security.keyvault.certificates.CertificateAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultSecretHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultSecretHealthIndicator.java similarity index 96% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultSecretHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultSecretHealthIndicator.java index 0d3b6b0e8c1d..597a8a0afd61 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultSecretHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultSecretHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.keyvault; +package com.azure.spring.cloud.actuator.implementation.keyvault; import com.azure.core.exception.ResourceNotFoundException; import com.azure.security.keyvault.secrets.SecretAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageBlobHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageBlobHealthIndicator.java similarity index 83% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageBlobHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageBlobHealthIndicator.java index 90a7a47db117..f42ead8b828c 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageBlobHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageBlobHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import com.azure.core.http.rest.Response; import com.azure.storage.blob.BlobContainerAsyncClient; @@ -12,9 +12,9 @@ import java.time.Duration; import static com.azure.spring.cloud.actuator.implementation.util.ActuateConstants.DEFAULT_HEALTH_CHECK_TIMEOUT; -import static com.azure.spring.cloud.actuator.storage.StorageHealthConstants.NOT_CONFIGURED_STATUS; -import static com.azure.spring.cloud.actuator.storage.StorageHealthConstants.NOT_EXISTING_CONTAINER; -import static com.azure.spring.cloud.actuator.storage.StorageHealthConstants.URL_FIELD; +import static com.azure.spring.cloud.actuator.implementation.storage.StorageHealthConstants.NOT_CONFIGURED_STATUS; +import static com.azure.spring.cloud.actuator.implementation.storage.StorageHealthConstants.NOT_EXISTING_CONTAINER; +import static com.azure.spring.cloud.actuator.implementation.storage.StorageHealthConstants.URL_FIELD; /** * Health indicator for blob storage. diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageFileShareHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageFileShareHealthIndicator.java similarity index 91% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageFileShareHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageFileShareHealthIndicator.java index b755caeff7c3..332761eda642 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageFileShareHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageFileShareHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import com.azure.core.http.rest.Response; import com.azure.storage.file.share.ShareServiceAsyncClient; @@ -12,7 +12,7 @@ import java.time.Duration; import static com.azure.spring.cloud.actuator.implementation.util.ActuateConstants.DEFAULT_HEALTH_CHECK_TIMEOUT; -import static com.azure.spring.cloud.actuator.storage.StorageHealthConstants.URL_FIELD; +import static com.azure.spring.cloud.actuator.implementation.storage.StorageHealthConstants.URL_FIELD; /** * Health indicator for file storage. diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageHealthConstants.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageHealthConstants.java similarity index 88% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageHealthConstants.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageHealthConstants.java index 57fb1a35a66f..81a973d2b2fa 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageHealthConstants.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageHealthConstants.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import org.springframework.boot.actuate.health.Status; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageQueueHealthIndicator.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageQueueHealthIndicator.java similarity index 90% rename from sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageQueueHealthIndicator.java rename to sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageQueueHealthIndicator.java index a530a7de2acd..00958087eedc 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/StorageQueueHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/implementation/storage/StorageQueueHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import com.azure.core.http.rest.Response; import com.azure.storage.queue.QueueServiceAsyncClient; @@ -12,7 +12,7 @@ import java.time.Duration; import static com.azure.spring.cloud.actuator.implementation.util.ActuateConstants.DEFAULT_HEALTH_CHECK_TIMEOUT; -import static com.azure.spring.cloud.actuator.storage.StorageHealthConstants.URL_FIELD; +import static com.azure.spring.cloud.actuator.implementation.storage.StorageHealthConstants.URL_FIELD; /** * Health indicator for file storage. diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/package-info.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/package-info.java deleted file mode 100644 index a84db474ba0d..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/keyvault/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure Actuator support for Key Vault. - */ -package com.azure.spring.cloud.actuator.keyvault; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/package-info.java b/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/package-info.java deleted file mode 100644 index 17d4a1c793b2..000000000000 --- a/sdk/spring/spring-cloud-azure-actuator/src/main/java/com/azure/spring/cloud/actuator/storage/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure Actuator support for Storage. - */ -package com.azure.spring.cloud.actuator.storage; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationHealthIndicatorTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationHealthIndicatorTests.java index 58cbbccdca4a..078a599bfc22 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/appconfiguration/AppConfigurationHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/appconfiguration/AppConfigurationHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.appconfiguration; +package com.azure.spring.cloud.actuator.implementation.appconfiguration; import com.azure.data.appconfiguration.ConfigurationAsyncClient; import com.azure.data.appconfiguration.models.ConfigurationSetting; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthIndicatorTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthIndicatorTests.java index a481c4abefb2..f6cfd3062679 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/cosmos/CosmosHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/cosmos/CosmosHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.cosmos; +package com.azure.spring.cloud.actuator.implementation.cosmos; import com.azure.cosmos.CosmosAsyncClient; import com.azure.cosmos.CosmosAsyncDatabase; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/eventhubs/EventHubsHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/eventhubs/EventHubsHealthIndicatorTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/eventhubs/EventHubsHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/eventhubs/EventHubsHealthIndicatorTests.java index 2e55db61a6c9..7544be9e02d9 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/eventhubs/EventHubsHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/eventhubs/EventHubsHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.eventhubs; +package com.azure.spring.cloud.actuator.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubConsumerAsyncClient; import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultCertificateHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultCertificateHealthIndicatorTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultCertificateHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultCertificateHealthIndicatorTests.java index fc4b0c1e0f98..ba45f25bebbf 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultCertificateHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultCertificateHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.keyvault; +package com.azure.spring.cloud.actuator.implementation.keyvault; import com.azure.core.http.rest.Response; import com.azure.security.keyvault.certificates.CertificateAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultSecretHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultSecretHealthIndicatorTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultSecretHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultSecretHealthIndicatorTests.java index 62b0c1d79dc3..889e1b6a17dc 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/keyvault/KeyVaultSecretHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/keyvault/KeyVaultSecretHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.keyvault; +package com.azure.spring.cloud.actuator.implementation.keyvault; import com.azure.core.http.rest.Response; import com.azure.security.keyvault.secrets.SecretAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageBlobHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageBlobHealthIndicatorTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageBlobHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageBlobHealthIndicatorTests.java index 034dd2a1a7a4..1f724a018d6a 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageBlobHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageBlobHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageFileShareHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageFileShareHealthIndicatorTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageFileShareHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageFileShareHealthIndicatorTests.java index fe6f662e6d3b..28ed556e3e51 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageFileShareHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageFileShareHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import com.azure.core.http.rest.Response; import com.azure.storage.file.share.ShareServiceAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageQueueHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageQueueHealthIndicatorTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageQueueHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageQueueHealthIndicatorTests.java index f592821cc915..5c0c697f37bd 100644 --- a/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/storage/StorageQueueHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-actuator/src/test/java/com/azure/spring/cloud/actuator/implementation/storage/StorageQueueHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.actuator.storage; +package com.azure.spring.cloud.actuator.implementation.storage; import com.azure.core.http.rest.Response; import com.azure.storage.queue.QueueServiceAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/CHANGELOG.md b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/CHANGELOG.md index a5d6b5e49ffb..cde7b72e9d0d 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -8,36 +9,74 @@ ### Bugs Fixed +* Removes final from App Configuration refresh endpoints, which caused errors when creating Spring AOP Aspects. + ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. @@ -49,10 +88,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav * Snapshot support using, `spring.cloud.azure.appconfiguration.stores[0].selects[0].snapshot-name`. * Support for trimming prefixes from keys, default value is the key-filter when key-filter is used. `spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix` +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -61,10 +108,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml index 8d67f72ced6c..0ecf388681e1 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/pom.xml @@ -1,110 +1,168 @@ - - com.azure - azure-client-sdk-parent - 1.7.0 - ../../parents/azure-client-sdk-parent - - 4.0.0 - - com.azure.spring - spring-cloud-azure-appconfiguration-config-web - 4.20.0-beta.1 - Spring Cloud Azure App Configuration Config Web - Integration of Spring Cloud Config and Azure App Configuration Service - - - false - - - + + com.azure + azure-client-sdk-parent + 1.7.0 + ../../parents/azure-client-sdk-parent + + 4.0.0 + com.azure.spring + spring-cloud-azure-appconfiguration-config-web + 5.14.0-beta.1 + Spring Cloud Azure App Configuration Config Web + Integration of Spring Cloud Config and Azure App Configuration Service + + false + + + + + + com.azure.spring + spring-cloud-azure-appconfiguration-config + 5.14.0-beta.1 + + + org.springframework.boot + spring-boot-starter-web + 3.3.0 + + + org.springframework.boot + spring-boot-starter-actuator + 3.3.0 + true + + + org.springframework.cloud + spring-cloud-bus + 4.1.1 + true + + + org.springframework.boot + spring-boot-starter-test + 3.3.0 + test + - - - com.azure.spring - spring-cloud-azure-appconfiguration-config - 4.20.0-beta.1 - - - org.springframework.boot - spring-boot-starter-web - 2.7.18 - - - org.springframework.boot - spring-boot-starter-actuator - 2.7.18 - true - - - org.springframework.cloud - spring-cloud-bus - 3.1.3 - true - - - org.springframework.boot - spring-boot-starter-test - 2.7.18 - test - - - org.mockito - mockito-core - 4.11.0 - test - + + + org.mockito + mockito-core + 5.11.0 + test + net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 3.4.1 - - - - - org.springframework.boot:spring-boot-starter-actuator:[2.7.18] - org.springframework.boot:spring-boot-starter-web:[2.7.18] - org.springframework.cloud:spring-cloud-bus:[3.1.3] - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - - com.azure.spring.cloud.starter.appconfiguration - - - true - - - - - + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + -Xlint:deprecation + + + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.4.1 + + + + + org.springframework.boot:spring-boot-starter-actuator:[3.3.0] + org.springframework.boot:spring-boot-starter-web:[3.3.0] + org.springframework.cloud:spring-cloud-bus:[4.1.1] + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.1 + + + + com.azure.spring.cloud.appconfiguration.config.web + + + true + + + + + - - - empty-javadoc-jar-with-readme - package - - jar - - - javadoc - ${project.basedir}/javadocTemp - - - - empty-source-jar-with-readme - package - - jar - - - sources - ${project.basedir}/sourceTemp - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.6.3 - - - attach-javadocs - - jar - - - true - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 3.1.0 - - - copy-readme-to-javadocTemp-and-sourceTemp - prepare-package - - - Deleting existing ${project.basedir}/javadocTemp and + + + empty-javadoc-jar-with-readme + package + + jar + + + javadoc + ${project.basedir}/javadocTemp + + + + empty-source-jar-with-readme + package + + jar + + + sources + ${project.basedir}/sourceTemp + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.3 + + + attach-javadocs + + jar + + + true + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.1.0 + + + copy-readme-to-javadocTemp-and-sourceTemp + prepare-package + + + Deleting existing ${project.basedir}/javadocTemp and ${project.basedir}/sourceTemp - - - - - Copying ${project.basedir}/../README.md to + + + + + Copying ${project.basedir}/../README.md to ${project.basedir}/javadocTemp/README.md - - Copying ${project.basedir}/../README.md to + + Copying ${project.basedir}/../README.md to ${project.basedir}/sourceTemp/README.md - - - - - run - - - - - - - + + + + + run + + + + + + + diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpoint.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpoint.java index bcfa48a494dc..bab5c8f2e1d4 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpoint.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpoint.java @@ -12,19 +12,19 @@ import java.util.Map; import java.util.stream.Collectors; -import javax.servlet.http.HttpServletRequest; - import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreMonitoring.AccessToken; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreMonitoring.PushNotification; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; + /** * Common class for authenticating refresh requests. */ public class AppConfigurationEndpoint { - + private static final String CONFIG_STORE_SUBJECT = "subject"; private final URI endpoint; @@ -151,4 +151,5 @@ public JsonNode getValidationResponse() { public String getEndpoint() { return endpoint.getScheme() + "://" + endpoint.getHost(); } + } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebConstants.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebConstants.java index a13b6383e0b6..0d44206ffc9a 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebConstants.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebConstants.java @@ -11,10 +11,6 @@ public final class AppConfigurationWebConstants { * Validation Code Key value */ public static final String VALIDATION_CODE_KEY = "validationCode"; - /** - * Validation Topic for push refresh. - */ - public static final String VALIDATION_TOPIC = "topic"; /** * Json field name for Data section diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpoint.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpoint.java index 9188bf365b31..d44835fa59e7 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpoint.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpoint.java @@ -8,9 +8,6 @@ import java.io.IOException; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpoint; @@ -27,11 +24,14 @@ import com.azure.spring.cloud.appconfiguration.config.web.implementation.AppConfigurationEndpoint; import com.fasterxml.jackson.databind.JsonNode; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Endpoint for requesting new configurations to be loaded in all registered instances on the Bus. */ @ControllerEndpoint(id = APPCONFIGURATION_REFRESH_BUS) -public final class AppConfigurationBusRefreshEndpoint extends AbstractBusEndpoint { +public class AppConfigurationBusRefreshEndpoint extends AbstractBusEndpoint { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfigurationBusRefreshEndpoint.class); @@ -86,12 +86,12 @@ public String refresh(HttpServletRequest request, HttpServletResponse response, if (!endpoint.authenticate()) { return HttpStatus.UNAUTHORIZED.getReasonPhrase(); } - + if (endpoint.triggerRefresh()) { // Spring Bus is in use, will publish a RefreshRemoteApplicationEvent publish(new AppConfigurationBusRefreshEvent(endpoint.getEndpoint(), syncToken, this, getInstanceId(), - new PathDestinationFactory().getDestination(null))); + new PathDestinationFactory().getDestination(null))); return HttpStatus.OK.getReasonPhrase(); } else { LOGGER.debug("Non Refreshable notification"); diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpoint.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpoint.java index 4be4fe569bc9..2f09b8449e95 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpoint.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpoint.java @@ -8,9 +8,6 @@ import java.io.IOException; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpoint; @@ -26,11 +23,14 @@ import com.azure.spring.cloud.appconfiguration.config.web.implementation.AppConfigurationEndpoint; import com.fasterxml.jackson.databind.JsonNode; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Endpoint for requesting new configurations to be loaded. */ @ControllerEndpoint(id = APPCONFIGURATION_REFRESH) -public final class AppConfigurationRefreshEndpoint implements ApplicationEventPublisherAware { +public class AppConfigurationRefreshEndpoint implements ApplicationEventPublisherAware { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfigurationRefreshEndpoint.class); diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 6fdb5e0c1aa4..000000000000 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.azure.spring.cloud.appconfiguration.config.web.implementation.AppConfigurationWebAutoConfiguration diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..b972c6d10ab6 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.azure.spring.cloud.appconfiguration.config.web.implementation.AppConfigurationWebAutoConfiguration \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpointTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpointTest.java index 69b3bfe12d0d..aab7e1a959ee 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpointTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationEndpointTest.java @@ -17,8 +17,6 @@ import java.util.Map; import java.util.stream.Stream; -import javax.servlet.http.HttpServletRequest; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -32,6 +30,8 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; + public class AppConfigurationEndpointTest { @Mock diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebAutoConfigurationTest.java index 59624f3947db..2f861d46ad5d 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebAutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/AppConfigurationWebAutoConfigurationTest.java @@ -22,7 +22,7 @@ import com.azure.spring.cloud.appconfiguration.config.AppConfigurationAutoConfiguration; import com.azure.spring.cloud.appconfiguration.config.implementation.config.AppConfigurationBootstrapConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; public class AppConfigurationWebAutoConfigurationTest { diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpointTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpointTest.java index 6aff460c6233..83cf0cdb0dee 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpointTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushbusrefresh/AppConfigurationBusRefreshEndpointTest.java @@ -19,9 +19,6 @@ import java.util.Map; import java.util.stream.Stream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -38,6 +35,9 @@ import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreTrigger; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + public class AppConfigurationBusRefreshEndpointTest { @Mock @@ -114,7 +114,7 @@ public void webHookValidation() throws IOException { when(lines.collect(Mockito.any())).thenReturn("[{\r\n" + " \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\",\r\n" + " \"topic\":" + TOPIC + ",\r\n" - + " \"subject\": \"https://fake.test.azconfig.io/kv/Foo?label=FizzBuzz\",\r\n" + + " \"subject\": \"https://fake.test.azconfig.io/kv/Foo?label=FizzBuzz\",\r\n" + " \"data\": {\r\n" + " \"validationCode\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\",\r\n" + " \"validationUrl\":" + VALIDATION_URL + ",\r\n" diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpointTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpointTest.java index becc434610c0..249507465cd4 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpointTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config-web/src/test/java/com/azure/spring/cloud/appconfiguration/config/web/implementation/pushrefresh/AppConfigurationRefreshEndpointTest.java @@ -19,9 +19,6 @@ import java.util.Map; import java.util.stream.Stream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -39,6 +36,9 @@ import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreTrigger; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + public class AppConfigurationRefreshEndpointTest { @Mock @@ -117,7 +117,7 @@ public void webHookValidation() throws IOException { when(lines.collect(Mockito.any())).thenReturn("[{\r\n" + " \"id\": \"2d1781af-3a4c-4d7c-bd0c-e34b19da4e66\",\r\n" + " \"topic\":" + TOPIC + ",\r\n" - + " \"subject\": \"https://fake.test.azconfig.io/kv/Foo?label=FizzBuzz\",\r\n" + + " \"subject\": \"https://fake.test.azconfig.io/kv/Foo?label=FizzBuzz\",\r\n" + " \"data\": {\r\n" + " \"validationCode\": \"512d38b6-c7b8-40c8-89fe-f46f9e9622b6\",\r\n" + " \"validationUrl\":" + VALIDATION_URL + ",\r\n" diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/CHANGELOG.md b/sdk/spring/spring-cloud-azure-appconfiguration-config/CHANGELOG.md index 76b4ac3a4c23..a7aba7f1f22a 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/CHANGELOG.md @@ -1,5 +1,6 @@ # Release History +## 5.14.0-beta.1 (Unreleased) ## 4.20.0-beta.1 (Unreleased) ### Features Added @@ -10,34 +11,70 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. @@ -49,10 +86,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav * Snapshot support using, `spring.cloud.azure.appconfiguration.stores[0].selects[0].snapshot-name`. * Support for trimming prefixes from keys, default value is the key-filter when key-filter is used. `spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix` +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -61,10 +106,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml b/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml index febf27eeb135..4f150c904b8d 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/pom.xml @@ -1,154 +1,231 @@ - - com.azure - azure-client-sdk-parent - 1.7.0 - ../../parents/azure-client-sdk-parent - - 4.0.0 - com.azure.spring - spring-cloud-azure-appconfiguration-config - 4.20.0-beta.1 - Spring Cloud Azure App Configuration Config - Integration of Spring Cloud Config and Azure App Configuration Service - - false - - - - - - org.springframework.boot - spring-boot-autoconfigure - 2.7.18 - - - org.springframework.cloud - spring-cloud-starter-bootstrap - 3.1.8 - - - org.springframework.cloud - spring-cloud-context - 3.1.8 - - - org.springframework.boot - spring-boot-actuator - 2.7.18 - compile - - - - com.azure - azure-core - 1.49.1 - - - com.azure - azure-data-appconfiguration - 1.6.2 - - - com.azure - azure-identity - 1.13.0 - - - com.azure - azure-security-keyvault-secrets - 4.8.4 - - - com.azure.spring - spring-cloud-azure-service - 4.20.0-beta.1 - - - com.azure.spring - spring-cloud-azure-autoconfigure - 4.20.0-beta.1 - - - - org.springframework.boot - spring-boot-starter-test - 2.7.18 - test - - - org.mockito - mockito-core - 4.11.0 - test - + + com.azure + azure-client-sdk-parent + 1.7.0 + ../../parents/azure-client-sdk-parent + + 4.0.0 + com.azure.spring + spring-cloud-azure-appconfiguration-config + 5.14.0-beta.1 + Spring Cloud Azure App Configuration Config + Integration of Spring Cloud Config and Azure App Configuration Service + + false + + + + + + org.springframework.boot + spring-boot-autoconfigure + 3.3.0 + + + org.springframework.cloud + spring-cloud-starter-bootstrap + 4.1.2 + + + org.springframework.cloud + spring-cloud-context + 4.1.2 + + + org.springframework.boot + spring-boot-actuator + 3.3.0 + compile + + + + com.azure + azure-core + 1.49.1 + + + com.azure + azure-data-appconfiguration + 1.6.2 + + + com.azure + azure-identity + 1.13.0 + + + com.azure + azure-security-keyvault-secrets + 4.8.4 + + + com.azure.spring + spring-cloud-azure-service + 5.14.0-beta.1 + + + com.azure.spring + spring-cloud-azure-autoconfigure + 5.14.0-beta.1 + + + + org.springframework.boot + spring-boot-starter-test + 3.3.0 + test + + + org.springframework.boot + spring-boot-configuration-processor + 3.3.0 + true + + + + + org.mockito + mockito-core + 5.11.0 + test + net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test - - - com.google.code.findbugs - jsr305 - 3.0.2 - provided - - - javax.annotation - javax.annotation-api - 1.3.2 - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 3.4.1 - - - - - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - javax.annotation:javax.annotation-api:[1.3.2] - org.hibernate.validator:hibernate-validator:[6.2.5.Final] - org.springframework.boot:spring-boot-actuator:[2.7.18] - org.springframework.boot:spring-boot-autoconfigure:[2.7.18] - org.springframework.cloud:spring-cloud-context:[3.1.8] - org.springframework.cloud:spring-cloud-starter-bootstrap:[3.1.8] - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - - true - true - - - - - - + + com.google.code.findbugs + jsr305 + 3.0.2 + provided + + + + + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + -Xlint:deprecation + + + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + annotation-process + + compile + + + + -proc:only + + 17 + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.4.1 + + + + + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + org.springframework.boot:spring-boot-actuator:[3.3.0] + org.springframework.boot:spring-boot-autoconfigure:[3.3.0] + org.springframework.cloud:spring-cloud-context:[4.1.2] + org.springframework.boot:spring-boot-configuration-processor:[3.3.0] + org.springframework.cloud:spring-cloud-starter-bootstrap:[4.1.2] + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.1 + + + + com.azure.spring.cloud.appconfiguration.config + + + true + true + + + + + + diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationAutoConfiguration.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationAutoConfiguration.java index 1d584e011eb2..427bc85869f8 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationAutoConfiguration.java @@ -12,6 +12,7 @@ import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationPullRefresh; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationReplicaClientFactory; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProviderProperties; @@ -23,6 +24,12 @@ @ConditionalOnProperty(prefix = AppConfigurationProperties.CONFIG_PREFIX, name = "enabled", matchIfMissing = true) public class AppConfigurationAutoConfiguration { + /** + * Creates an instance of {@link AppConfigurationAutoConfiguration} + */ + public AppConfigurationAutoConfiguration() { + } + /** * Auto Watch */ @@ -30,12 +37,18 @@ public class AppConfigurationAutoConfiguration { @ConditionalOnClass(RefreshEndpoint.class) public static class AppConfigurationWatchAutoConfiguration { + /** + * Creates an instance of {@link AppConfigurationWatchAutoConfiguration} + */ + public AppConfigurationWatchAutoConfiguration() { + } + @Bean @ConditionalOnMissingBean AppConfigurationRefresh appConfigurationRefresh(AppConfigurationProperties properties, - AppConfigurationProviderProperties appProperties, AppConfigurationReplicaClientFactory clientFactory) { + AppConfigurationProviderProperties appProperties, AppConfigurationReplicaClientFactory clientFactory, ReplicaLookUp replicaLookUp) { return new AppConfigurationPullRefresh(clientFactory, properties.getRefreshInterval(), - appProperties.getDefaultMinBackoff()); + appProperties.getDefaultMinBackoff(), replicaLookUp); } } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationRefresh.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationRefresh.java index b93ce1127c59..b43b708ecc8c 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationRefresh.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/AppConfigurationRefresh.java @@ -5,7 +5,6 @@ import java.util.Map; import org.springframework.context.ApplicationEventPublisherAware; -import org.springframework.scheduling.annotation.Async; import reactor.core.publisher.Mono; @@ -20,7 +19,6 @@ public interface AppConfigurationRefresh extends ApplicationEventPublisherAware * @return Mono with a boolean of if a RefreshEvent was published. If refreshConfigurations is currently being run * elsewhere this method will return right away as false. */ - @Async Mono refreshConfigurations(); /** diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySource.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySource.java index 87cc8bddc073..c6fbf1b5e18b 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySource.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySource.java @@ -4,7 +4,6 @@ import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_CONTENT_TYPE; -import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -16,7 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.util.ReflectionUtils; +import org.springframework.boot.context.properties.source.InvalidConfigurationPropertyValueException; import org.springframework.util.StringUtils; import com.azure.data.appconfiguration.models.ConfigurationSetting; @@ -24,7 +23,6 @@ import com.azure.data.appconfiguration.models.SecretReferenceConfigurationSetting; import com.azure.data.appconfiguration.models.SettingSelector; import com.azure.security.keyvault.secrets.models.KeyVaultSecret; -import com.fasterxml.jackson.core.JsonProcessingException; /** * Azure App Configuration PropertySource unique per Store Label(Profile) combo. @@ -58,11 +56,11 @@ class AppConfigurationApplicationSettingPropertySource extends AppConfigurationP *

* Gets settings from Azure/Cache to set as configurations. Updates the cache. *

- * + * * @param keyPrefixTrimValues prefixs to trim from key values - * @throws JsonProcessingException thrown if fails to parse Json content type + * @throws InvalidConfigurationPropertyValueException thrown if fails to parse Json content type */ - public void initProperties(List keyPrefixTrimValues) throws JsonProcessingException { + public void initProperties(List keyPrefixTrimValues) throws InvalidConfigurationPropertyValueException { List labels = Arrays.asList(labelFilters); // Reverse labels so they have the right priority order. @@ -79,7 +77,7 @@ public void initProperties(List keyPrefixTrimValues) throws JsonProcessi protected void processConfigurationSettings(List settings, String keyFilter, List keyPrefixTrimValues) - throws JsonProcessingException { + throws InvalidConfigurationPropertyValueException { for (ConfigurationSetting setting : settings) { if (keyPrefixTrimValues == null && StringUtils.hasText(keyFilter)) { keyPrefixTrimValues = new ArrayList<>(); @@ -100,44 +98,39 @@ protected void processConfigurationSettings(List settings, } } } - + /** * Given a Setting's Key Vault Reference stored in the Settings value, it will get its entry in Key Vault. * - * @param key Application Setting name + * @param key Application Setting name * @param secretReference {"uri": "<your-vault-url>/secret/<secret>/<version>"} * @return Key Vault Secret Value + * @throws InvalidConfigurationPropertyValueException */ - protected void handleKeyVaultReference(String key, SecretReferenceConfigurationSetting secretReference) { + protected void handleKeyVaultReference(String key, SecretReferenceConfigurationSetting secretReference) + throws InvalidConfigurationPropertyValueException { + // Parsing Key Vault Reference for URI try { - KeyVaultSecret secret = null; - - // Parsing Key Vault Reference for URI - try { - URI uri = new URI(secretReference.getSecretId()); - secret = keyVaultClientFactory.getClient("https://" + uri.getHost()).getSecret(uri); - } catch (URISyntaxException e) { - LOGGER.error("Error Processing Key Vault Entry URI."); - ReflectionUtils.rethrowRuntimeException(e); - } - - if (secret == null) { - throw new IOException("No Key Vault Secret found for Reference."); - } + URI uri = new URI(secretReference.getSecretId()); + KeyVaultSecret secret = keyVaultClientFactory.getClient("https://" + uri.getHost()).getSecret(uri); properties.put(key, secret.getValue()); - } catch (RuntimeException | IOException e) { - LOGGER.error("Error Retrieving Key Vault Entry"); - ReflectionUtils.rethrowRuntimeException(e); + } catch (URISyntaxException e) { + LOGGER.error(String.format("Error Retrieving Key Vault Entry for key %s.", key)); + throw new InvalidConfigurationPropertyValueException(key, "", + "Invalid URI found in JSON property field 'uri' unable to parse."); + } catch (RuntimeException e) { + LOGGER.error(String.format("Error Retrieving Key Vault Entry for key %s.", key)); + throw e; } } void handleFeatureFlag(String key, FeatureFlagConfigurationSetting setting, List trimStrings) - throws JsonProcessingException { + throws InvalidConfigurationPropertyValueException { handleJson(setting, trimStrings); } void handleJson(ConfigurationSetting setting, List keyPrefixTrimValues) - throws JsonProcessingException { + throws InvalidConfigurationPropertyValueException { Map jsonSettings = JsonConfigurationParser.parseJsonSetting(setting); for (Entry jsonSetting : jsonSettings.entrySet()) { String key = trimKey(jsonSetting.getKey(), keyPrefixTrimValues); @@ -145,7 +138,6 @@ void handleJson(ConfigurationSetting setting, List keyPrefixTrimValues) } } - protected String trimKey(String key, List trimStrings) { key = key.trim(); if (trimStrings != null) { diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationConstants.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationConstants.java index 04f3ffea3af2..44a8db8df3cc 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationConstants.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationConstants.java @@ -51,7 +51,7 @@ public class AppConfigurationConstants { * Constant for tracing for Replica Count */ public static final String REPLICA_COUNT = "ReplicaCount"; - + /** * Http Header User Agent */ @@ -67,6 +67,10 @@ public class AppConfigurationConstants { */ public static final String EMPTY_LABEL = "\0"; + public static final String CONDITIONS = "conditions"; + + public static final String TELEMETRY = "telemetry"; + public static final String USERS = "users"; public static final String USERS_CAPS = "Users"; @@ -82,11 +86,16 @@ public class AppConfigurationConstants { public static final String DEFAULT_ROLLOUT_PERCENTAGE = "defaultRolloutPercentage"; public static final String DEFAULT_ROLLOUT_PERCENTAGE_CAPS = "DefaultRolloutPercentage"; - + public static final String DEFAULT_REQUIREMENT_TYPE = "Any"; - + public static final String REQUIREMENT_TYPE_SERVICE = "requirement_type"; - + public static final String REQUIREMENT_TYPE = "requirement-type"; + public static final String FEATURE_FLAG_ID = "FeatureFlagId"; + + public static final String FEATURE_FLAG_REFERENCE = "FeatureFlagReference"; + + public static final String E_TAG = "ETag"; } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySource.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySource.java index f310c604ef3b..310081227eaa 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySource.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySource.java @@ -2,43 +2,7 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.AUDIENCE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_REQUIREMENT_TYPE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_ROLLOUT_PERCENTAGE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_ROLLOUT_PERCENTAGE_CAPS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_CONTENT_TYPE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_PREFIX; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_MANAGEMENT_KEY; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.GROUPS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.GROUPS_CAPS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.REQUIREMENT_TYPE_SERVICE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.SELECT_ALL_FEATURE_FLAGS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.TARGETING_FILTER; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.USERS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.USERS_CAPS; -import static java.util.Collections.emptyList; -import static java.util.stream.Collectors.toMap; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.IntStream; - -import org.springframework.util.StringUtils; - -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 com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.Feature; -import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; +import org.springframework.core.env.EnumerablePropertySource; /** * Azure App Configuration PropertySource unique per Store Label(Profile) combo. @@ -47,171 +11,30 @@ * i.e. If connecting to 2 stores and have 2 labels set 4 AppConfigurationPropertySources need to be created. *

*/ -class AppConfigurationFeatureManagementPropertySource extends AppConfigurationPropertySource { +class AppConfigurationFeatureManagementPropertySource extends EnumerablePropertySource { - private static final ObjectMapper CASE_INSENSITIVE_MAPPER = JsonMapper.builder() - .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true).build(); + private final FeatureFlagClient featureFlagLoader; - private final String keyFilter; + private static final String FEATURE_MANAGEMENT_KEY = "feature_management"; - private final String[] labelFilter; + private static final String FEATURE_FLAG_KEY = FEATURE_MANAGEMENT_KEY + ".feature_flags"; - AppConfigurationFeatureManagementPropertySource(String originEndpoint, AppConfigurationReplicaClient replicaClient, - String keyFilter, String[] labelFilter) { - super("FM_" + originEndpoint + "/" + getLabelName(labelFilter), replicaClient); - this.keyFilter = keyFilter; - this.labelFilter = labelFilter; + AppConfigurationFeatureManagementPropertySource(FeatureFlagClient featureFlagLoader) { + super(FEATURE_MANAGEMENT_KEY, featureFlagLoader); + this.featureFlagLoader = featureFlagLoader; } - /** - *

- * Gets settings from Azure/Cache to set as configurations. Updates the cache. - *

- * - *

- * Note: Doesn't update Feature Management, just stores values in cache. Call {@code initFeatures} to update - * Feature Management, but make sure its done in the last {@code AppConfigurationPropertySource} - * AppConfigurationPropertySource} - *

- * - */ @Override - public void initProperties(List trim) { - SettingSelector settingSelector = new SettingSelector(); - - String keyFilter = SELECT_ALL_FEATURE_FLAGS; - - if (StringUtils.hasText(this.keyFilter)) { - keyFilter = FEATURE_FLAG_PREFIX + this.keyFilter; - } - - settingSelector.setKeyFilter(keyFilter); - - List labels = Arrays.asList(labelFilter); - Collections.reverse(labels); - - for (String label : labels) { - settingSelector.setLabelFilter(label); - - List features = replicaClient.listSettings(settingSelector); - - // Reading In Features - for (ConfigurationSetting setting : features) { - if (setting instanceof FeatureFlagConfigurationSetting - && FEATURE_FLAG_CONTENT_TYPE.equals(setting.getContentType())) { - processFeatureFlag(null, (FeatureFlagConfigurationSetting) setting, null); - } - } - } - } - - List getFeatureFlagSettings() { - return featureConfigurationSettings; - } - - protected void processFeatureFlag(String key, FeatureFlagConfigurationSetting setting, List trimStrings) { - TracingInfo tracing = replicaClient.getTracingInfo(); - featureConfigurationSettings.add(setting); - FeatureFlagConfigurationSetting featureFlag = setting; - - String configName = FEATURE_MANAGEMENT_KEY + setting.getKey().trim().substring(FEATURE_FLAG_PREFIX.length()); - - updateTelemetry(featureFlag, tracing); - - properties.put(configName, createFeature(featureFlag)); + public String[] getPropertyNames() { + String[] names = { FEATURE_FLAG_KEY }; + return names; } - /** - * Creates a {@code Feature} from a {@code KeyValueItem} - * - * @param item Used to create Features before being converted to be set into properties. - * @return Feature created from KeyValueItem - */ - @SuppressWarnings("unchecked") - protected static Object createFeature(FeatureFlagConfigurationSetting item) { - String key = getFeatureSimpleName(item); - String requirementType = DEFAULT_REQUIREMENT_TYPE; - try { - JsonNode node = CASE_INSENSITIVE_MAPPER.readTree(item.getValue()); - JsonNode conditions = node.get("conditions"); - if (conditions != null && conditions.get(REQUIREMENT_TYPE_SERVICE) != null) { - requirementType = conditions.get(REQUIREMENT_TYPE_SERVICE).asText(); - } - } catch (JsonProcessingException e) { - - } - Feature feature = new Feature(key, item, requirementType); - Map featureEnabledFor = feature.getEnabledFor(); - - // Setting Enabled For to null, but enabled = true will result in the feature - // being on. This is the case of a feature is on/off and set to on. This is to - // tell the difference between conditional/off which looks exactly the same... - // It should never be the case of Conditional On, and no filters coming from - // Azure, but it is a valid way from the config file, which should result in - // false being returned. - if (featureEnabledFor.size() == 0 && item.isEnabled()) { - return true; - } else if (!item.isEnabled()) { - return false; - } - for (int filter = 0; filter < feature.getEnabledFor().size(); filter++) { - FeatureFlagFilter featureFilterEvaluationContext = featureEnabledFor.get(filter); - Map parameters = featureFilterEvaluationContext.getParameters(); - - if (parameters == null || !TARGETING_FILTER.equals(featureEnabledFor.get(filter).getName())) { - continue; - } - - Object audienceObject = parameters.get(AUDIENCE); - if (audienceObject != null) { - parameters = (Map) audienceObject; - } - - List users = convertToListOrEmptyList(parameters, USERS_CAPS); - List groupRollouts = convertToListOrEmptyList(parameters, GROUPS_CAPS); - - switchKeyValues(parameters, USERS_CAPS, USERS, mapValuesByIndex(users)); - switchKeyValues(parameters, GROUPS_CAPS, GROUPS, mapValuesByIndex(groupRollouts)); - switchKeyValues(parameters, DEFAULT_ROLLOUT_PERCENTAGE_CAPS, DEFAULT_ROLLOUT_PERCENTAGE, - parameters.get(DEFAULT_ROLLOUT_PERCENTAGE_CAPS)); - - featureFilterEvaluationContext.setParameters(parameters); - featureEnabledFor.put(filter, featureFilterEvaluationContext); - feature.setEnabledFor(featureEnabledFor); - - } - return feature; - } - - /** - * Looks at each filter used in a Feature Flag to check what types it is using. - * - * @param featureFlag FeatureFlagConfigurationSetting - * @param tracing The TracingInfo for this store. - */ - protected static void updateTelemetry(FeatureFlagConfigurationSetting featureFlag, TracingInfo tracing) { - for (FeatureFlagFilter filter : featureFlag.getClientFilters()) { - tracing.getFeatureFlagTracing().updateFeatureFilterTelemetry(filter.getName()); + @Override + public Object getProperty(String name) { + if (FEATURE_FLAG_KEY.equals(name)) { + return featureFlagLoader.getProperties(); } - } - - private static String getFeatureSimpleName(ConfigurationSetting setting) { - return setting.getKey().trim().substring(FEATURE_FLAG_PREFIX.length()); - } - - @SuppressWarnings("null") - private static Map mapValuesByIndex(List users) { - return IntStream.range(0, users.size()).boxed().collect(toMap(String::valueOf, users::get)); - } - - private static void switchKeyValues(Map parameters, String oldKey, String newKey, Object value) { - parameters.put(newKey, value); - parameters.remove(oldKey); - } - - private static List convertToListOrEmptyList(Map parameters, String key) { - List listObjects = - CASE_INSENSITIVE_MAPPER.convertValue(parameters.get(key), new TypeReference>() {}); - return listObjects == null ? emptyList() : listObjects; + return null; } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySource.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySource.java index ca1a4caad94f..6877a09a014b 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySource.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySource.java @@ -8,11 +8,11 @@ import java.util.Map; import java.util.Set; +import org.springframework.boot.context.properties.source.InvalidConfigurationPropertyValueException; import org.springframework.core.env.EnumerablePropertySource; import com.azure.data.appconfiguration.ConfigurationClient; import com.azure.data.appconfiguration.models.ConfigurationSetting; -import com.fasterxml.jackson.core.JsonProcessingException; /** * Azure App Configuration PropertySource unique per Store Label(Profile) combo. @@ -55,5 +55,5 @@ protected static String getLabelName(String[] labelFilters) { return String.join(",", labelFilters); } - protected abstract void initProperties(List trim) throws JsonProcessingException; + protected abstract void initProperties(List trim) throws InvalidConfigurationPropertyValueException; } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocator.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocator.java index f17487acce07..824d3017cfa6 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocator.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocator.java @@ -22,10 +22,11 @@ import org.springframework.util.StringUtils; import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationKeyValueSelector; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProviderProperties; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreMonitoring; -import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreTrigger; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagKeyValueSelector; @@ -48,6 +49,10 @@ public final class AppConfigurationPropertySourceLocator implements PropertySour private final AppConfigurationKeyVaultClientFactory keyVaultClientFactory; + private final FeatureFlagClient featureFlagClient; + + private final ReplicaLookUp replicaLookUp; + private Duration refreshInterval; static final AtomicBoolean STARTUP = new AtomicBoolean(true); @@ -59,15 +64,19 @@ public final class AppConfigurationPropertySourceLocator implements PropertySour * @param appProperties Configurations for the library. * @param clientFactory factory for creating clients for connecting to Azure App Configuration. * @param keyVaultClientFactory factory for creating clients for connecting to Azure Key Vault + * @param featureFlagLoader service for loadingFeatureFlags. */ public AppConfigurationPropertySourceLocator(AppConfigurationProviderProperties appProperties, AppConfigurationReplicaClientFactory clientFactory, AppConfigurationKeyVaultClientFactory keyVaultClientFactory, - Duration refreshInterval, List configStores) { + Duration refreshInterval, List configStores, ReplicaLookUp replicaLookUp, + FeatureFlagClient featureFlagLoader) { this.refreshInterval = refreshInterval; this.appProperties = appProperties; this.configStores = configStores; this.clientFactory = clientFactory; this.keyVaultClientFactory = keyVaultClientFactory; + this.replicaLookUp = replicaLookUp; + this.featureFlagClient = featureFlagLoader; BackoffTimeCalculator.setDefaults(appProperties.getDefaultMaxBackoff(), appProperties.getDefaultMinBackoff()); } @@ -77,10 +86,14 @@ public PropertySource locate(Environment environment) { if (!(environment instanceof ConfigurableEnvironment)) { return null; } + replicaLookUp.updateAutoFailoverEndpoints(); ConfigurableEnvironment env = (ConfigurableEnvironment) environment; boolean currentlyLoaded = env.getPropertySources().stream().anyMatch(source -> { String storeName = configStores.get(0).getEndpoint(); + if (configStores.get(0).getSelects().size() == 0) { + return false; + } AppConfigurationKeyValueSelector selectedKey = configStores.get(0).getSelects().get(0); return source.getName() .startsWith(BOOTSTRAP_PROPERTY_SOURCE_NAME + "-" + selectedKey.getKeyFilter() + storeName + "/"); @@ -116,18 +129,19 @@ public PropertySource locate(Environment environment) { sourceList = new ArrayList<>(); if (!STARTUP.get() && reloadFailed && !AppConfigurationRefreshUtil - .checkStoreAfterRefreshFailed(client, clientFactory, configStore.getFeatureFlags(), profiles)) { + .checkStoreAfterRefreshFailed(client, clientFactory, configStore.getFeatureFlags())) { // This store doesn't have any changes where to refresh store did. Skipping Checking next. continue; } // Reverse in order to add Profile specific properties earlier, and last profile comes first try { - List sources = create(client, configStore, profiles); + List sources = createSettings(client, configStore, profiles); + List featureFlags = createFeatureFlags(client, configStore, profiles); sourceList.addAll(sources); LOGGER.debug("PropertySource context."); - setupMonitoring(configStore, client, sources, newState); + setupMonitoring(configStore, client, sources, newState, featureFlags); generatedPropertySources = true; } catch (AppConfigurationStatusException e) { @@ -154,6 +168,13 @@ public PropertySource locate(Environment environment) { failedToGeneratePropertySource(configStore, newState, new RuntimeException(message)); } + if (featureFlagClient.getProperties().size() > 0) { + // This can be true if feature flags are enabled or if a Snapshot contained feature flags + AppConfigurationFeatureManagementPropertySource acfmps = new AppConfigurationFeatureManagementPropertySource( + featureFlagClient); + composite.addPropertySource(acfmps); + } + } else if (!configStore.isEnabled() && loadNewPropertySources) { LOGGER.info("Not loading configurations from {} as it is not enabled.", configStore.getEndpoint()); } else { @@ -168,52 +189,22 @@ public PropertySource locate(Environment environment) { } private void setupMonitoring(ConfigStore configStore, AppConfigurationReplicaClient client, - List sources, StateHolder newState) { + List sources, StateHolder newState, List featureFlags) { AppConfigurationStoreMonitoring monitoring = configStore.getMonitoring(); if (configStore.getFeatureFlags().getEnabled()) { - List watchKeysFeatures = getFeatureFlagWatchKeys(configStore, sources); - newState.setStateFeatureFlag(configStore.getEndpoint(), watchKeysFeatures, + newState.setStateFeatureFlag(configStore.getEndpoint(), featureFlags, monitoring.getFeatureFlagRefreshInterval()); } if (monitoring.isEnabled()) { // Setting new ETag values for Watch - List watchKeysSettings = getWatchKeys(client, monitoring.getTriggers()); + List watchKeysSettings = monitoring.getTriggers().stream() + .map(trigger -> client.getWatchKey(trigger.getKey(), trigger.getLabel())).toList(); newState.setState(configStore.getEndpoint(), watchKeysSettings, monitoring.getRefreshInterval()); } newState.setLoadState(configStore.getEndpoint(), true, configStore.isFailFast()); - newState.setLoadStateFeatureFlag(configStore.getEndpoint(), configStore.getFeatureFlags().getEnabled(), - configStore.isFailFast()); - } - - private List getWatchKeys(AppConfigurationReplicaClient client, - List triggers) { - List watchKeysSettings = new ArrayList<>(); - for (AppConfigurationStoreTrigger trigger : triggers) { - ConfigurationSetting watchKey = client.getWatchKey(trigger.getKey(), trigger.getLabel()); - if (watchKey != null) { - watchKeysSettings.add(watchKey); - } else { - watchKeysSettings.add(new ConfigurationSetting().setKey(trigger.getKey()).setLabel(trigger.getLabel())); - } - } - return watchKeysSettings; - } - - private List getFeatureFlagWatchKeys(ConfigStore configStore, - List sources) { - List watchKeysFeatures = new ArrayList<>(); - if (configStore.getFeatureFlags().getEnabled()) { - for (AppConfigurationPropertySource propertySource : sources) { - if (propertySource instanceof AppConfigurationFeatureManagementPropertySource) { - watchKeysFeatures.addAll( - ((AppConfigurationFeatureManagementPropertySource) propertySource).getFeatureFlagSettings()); - } - } - } - return watchKeysFeatures; } private StateHolder failedToGeneratePropertySource(ConfigStore configStore, StateHolder newState, Exception e) { @@ -237,7 +228,6 @@ private StateHolder failedToGeneratePropertySource(ConfigStore configStore, Stat LOGGER.warn( "Unable to load configuration from Azure AppConfiguration store " + configStore.getEndpoint() + ".", e); newState.setLoadState(configStore.getEndpoint(), false, configStore.isFailFast()); - newState.setLoadStateFeatureFlag(configStore.getEndpoint(), false, configStore.isFailFast()); } return newState; } @@ -251,29 +241,18 @@ private StateHolder failedToGeneratePropertySource(ConfigStore configStore, Stat * @return a list of AppConfigurationPropertySources * @throws Exception creating a property source failed */ - private List create(AppConfigurationReplicaClient client, ConfigStore store, + private List createSettings(AppConfigurationReplicaClient client, ConfigStore store, List profiles) throws Exception { List sourceList = new ArrayList<>(); List selects = store.getSelects(); - if (store.getFeatureFlags().getEnabled()) { - for (FeatureFlagKeyValueSelector selectedKeys : store.getFeatureFlags().getSelects()) { - AppConfigurationFeatureManagementPropertySource propertySource = new AppConfigurationFeatureManagementPropertySource( - store.getEndpoint(), client, - selectedKeys.getKeyFilter(), selectedKeys.getLabelFilter(profiles)); - - propertySource.initProperties(null); - sourceList.add(propertySource); - } - } - for (AppConfigurationKeyValueSelector selectedKeys : selects) { AppConfigurationPropertySource propertySource = null; if (StringUtils.hasText(selectedKeys.getSnapshotName())) { propertySource = new AppConfigurationSnapshotPropertySource( selectedKeys.getSnapshotName() + "/" + store.getEndpoint(), client, keyVaultClientFactory, - selectedKeys.getSnapshotName()); + selectedKeys.getSnapshotName(), featureFlagClient); } else { propertySource = new AppConfigurationApplicationSettingPropertySource( selectedKeys.getKeyFilter() + store.getEndpoint() + "/", client, keyVaultClientFactory, @@ -287,6 +266,29 @@ private List create(AppConfigurationReplicaClien return sourceList; } + /** + * Creates a new set of AppConfigurationPropertySources, 1 per Label. + * + * @param client client for connecting to App Configuration + * @param store Config Store the PropertySource is being generated from + * @param profiles active profiles to be used as labels. it needs to be in the last one. + * @return a list of AppConfigurationPropertySources + * @throws Exception creating a property source failed + */ + private List createFeatureFlags(AppConfigurationReplicaClient client, ConfigStore store, + List profiles) throws Exception { + List featureFlagWatchKeys = new ArrayList<>(); + if (store.getFeatureFlags().getEnabled()) { + for (FeatureFlagKeyValueSelector selectedKeys : store.getFeatureFlags().getSelects()) { + List storesFeatureFlags = featureFlagClient.loadFeatureFlags(client, + selectedKeys.getKeyFilter(), selectedKeys.getLabelFilter(profiles)); + storesFeatureFlags.forEach(featureFlags -> featureFlags.setConfigStore(store)); + featureFlagWatchKeys.addAll(storesFeatureFlags); + } + } + return featureFlagWatchKeys; + } + private void delayException() { Instant currentDate = Instant.now(); Instant preKillTIme = appProperties.getStartDate().plusSeconds(appProperties.getPrekillTime()); diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefresh.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefresh.java index feface38b152..95d0e42c1233 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefresh.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefresh.java @@ -3,8 +3,6 @@ package com.azure.spring.cloud.appconfiguration.config.implementation; import java.time.Duration; -import java.util.Arrays; -import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; @@ -12,14 +10,12 @@ import org.slf4j.LoggerFactory; import org.springframework.cloud.endpoint.event.RefreshEvent; import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.EnvironmentAware; -import org.springframework.core.env.Environment; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationRefresh; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationStoreHealth; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationRefreshUtil.RefreshEventData; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.BaseAppConfigurationPolicy; import reactor.core.publisher.Mono; @@ -28,7 +24,7 @@ * Enables checking of Configuration updates. */ @Component -public class AppConfigurationPullRefresh implements AppConfigurationRefresh, EnvironmentAware { +public class AppConfigurationPullRefresh implements AppConfigurationRefresh { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfigurationPullRefresh.class); @@ -41,8 +37,8 @@ public class AppConfigurationPullRefresh implements AppConfigurationRefresh, Env private final AppConfigurationReplicaClientFactory clientFactory; private final Duration refreshInterval; - - private List profiles; + + private final ReplicaLookUp replicaLookUp; /** * Component used for checking for and triggering configuration refreshes. @@ -52,10 +48,11 @@ public class AppConfigurationPullRefresh implements AppConfigurationRefresh, Env * @param defaultMinBackoff minimum time between backoff retries minimum backoff time */ public AppConfigurationPullRefresh(AppConfigurationReplicaClientFactory clientFactory, Duration refreshInterval, - Long defaultMinBackoff) { + Long defaultMinBackoff, ReplicaLookUp replicaLookUp) { this.defaultMinBackoff = defaultMinBackoff; this.refreshInterval = refreshInterval; this.clientFactory = clientFactory; + this.replicaLookUp = replicaLookUp; } @@ -71,7 +68,6 @@ public void setApplicationEventPublisher(ApplicationEventPublisher applicationEv * @return Future with a boolean of if a RefreshEvent was published. If refreshConfigurations is currently being run * elsewhere this method will return right away as false. */ - @Async public Mono refreshConfigurations() { return Mono.just(refreshStores()); } @@ -98,12 +94,12 @@ public void expireRefreshInterval(String endpoint, String syncToken) { * * @return If a refresh event is called. */ - private Boolean refreshStores() { + private boolean refreshStores() { if (running.compareAndSet(false, true)) { BaseAppConfigurationPolicy.setWatchRequests(true); try { RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactory, - refreshInterval, profiles, defaultMinBackoff); + refreshInterval, defaultMinBackoff, replicaLookUp); if (eventData.getDoRefresh()) { publisher.publishEvent(new RefreshEvent(this, eventData, eventData.getMessage())); return true; @@ -124,9 +120,4 @@ public Map getAppConfigurationStoresHealth( return clientFactory.getHealth(); } - @Override - public void setEnvironment(Environment environment) { - profiles = Arrays.asList(environment.getActiveProfiles()); - } - } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtil.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtil.java index a565ff579136..935717ce4faa 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtil.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtil.java @@ -2,10 +2,6 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_CONTENT_TYPE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_PREFIX; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.SELECT_ALL_FEATURE_FLAGS; - import java.time.Duration; import java.time.Instant; import java.util.List; @@ -13,14 +9,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.util.StringUtils; +import com.azure.core.exception.HttpResponseException; import com.azure.data.appconfiguration.models.ConfigurationSetting; -import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; -import com.azure.data.appconfiguration.models.SettingSelector; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlagState; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.BaseAppConfigurationPolicy; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreMonitoring; -import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagKeyValueSelector; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagStore; class AppConfigurationRefreshUtil { @@ -28,13 +24,13 @@ class AppConfigurationRefreshUtil { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfigurationPullRefresh.class); /** - * Goes through each config store and checks if any of its keys need to be refreshed. If any store - * has a value that needs to be updated a refresh event is called after every store is checked. + * Goes through each config store and checks if any of its keys need to be refreshed. If any store has a value that + * needs to be updated a refresh event is called after every store is checked. * * @return If a refresh event is called. */ static RefreshEventData refreshStoresCheck(AppConfigurationReplicaClientFactory clientFactory, - Duration refreshInterval, List profiles, Long defaultMinBackoff) { + Duration refreshInterval, Long defaultMinBackoff, ReplicaLookUp replicaLookUp) { RefreshEventData eventData = new RefreshEventData(); BaseAppConfigurationPolicy.setWatchRequests(true); @@ -62,14 +58,15 @@ static RefreshEventData refreshStoresCheck(AppConfigurationReplicaClientFactory if (monitor.isEnabled() && StateHolder.getLoadState(originEndpoint)) { for (AppConfigurationReplicaClient client : clients) { try { - refreshWithTime(client, StateHolder.getState(originEndpoint), monitor.getRefreshInterval(), eventData); + refreshWithTime(client, StateHolder.getState(originEndpoint), monitor.getRefreshInterval(), + eventData, replicaLookUp); if (eventData.getDoRefresh()) { clientFactory.setCurrentConfigStoreClient(originEndpoint, client.getEndpoint()); return eventData; } // If check didn't throw an error other clients don't need to be checked. break; - } catch (AppConfigurationStatusException e) { + } catch (HttpResponseException e) { LOGGER.warn( "Failed attempting to connect to " + client.getEndpoint() + " during refresh check."); @@ -82,19 +79,18 @@ static RefreshEventData refreshStoresCheck(AppConfigurationReplicaClientFactory FeatureFlagStore featureStore = connection.getFeatureFlagStore(); - if (featureStore.getEnabled() && StateHolder.getLoadStateFeatureFlag(originEndpoint)) { + if (featureStore.getEnabled() && StateHolder.getStateFeatureFlag(originEndpoint) != null) { for (AppConfigurationReplicaClient client : clients) { try { - refreshWithTimeFeatureFlags(client, featureStore, - StateHolder.getStateFeatureFlag(originEndpoint), - monitor.getFeatureFlagRefreshInterval(), eventData, profiles); + refreshWithTimeFeatureFlags(client, StateHolder.getStateFeatureFlag(originEndpoint), + monitor.getFeatureFlagRefreshInterval(), eventData, replicaLookUp); if (eventData.getDoRefresh()) { clientFactory.setCurrentConfigStoreClient(originEndpoint, client.getEndpoint()); return eventData; } // If check didn't throw an error other clients don't need to be checked. break; - } catch (AppConfigurationStatusException e) { + } catch (HttpResponseException e) { LOGGER.warn( "Failed attempting to connect to " + client.getEndpoint() + " during refresh check."); @@ -115,9 +111,9 @@ static RefreshEventData refreshStoresCheck(AppConfigurationReplicaClientFactory } static boolean checkStoreAfterRefreshFailed(AppConfigurationReplicaClient client, - AppConfigurationReplicaClientFactory clientFactory, FeatureFlagStore featureStore, List profiles) { + AppConfigurationReplicaClientFactory clientFactory, FeatureFlagStore featureStore) { return refreshStoreCheck(client, clientFactory.findOriginForEndpoint(client.getEndpoint())) - || refreshStoreFeatureFlagCheck(featureStore, client, profiles); + || refreshStoreFeatureFlagCheck(featureStore, client); } /** @@ -139,18 +135,16 @@ private static boolean refreshStoreCheck(AppConfigurationReplicaClient client, S * This is for a refresh fail only. * * @param featureStore Feature info for the store - * @param profiles Current configured profiles, can be used as labels. * @param client Client checking for refresh * @return true if a refresh should be triggered. */ private static boolean refreshStoreFeatureFlagCheck(FeatureFlagStore featureStore, - AppConfigurationReplicaClient client, List profiles) { + AppConfigurationReplicaClient client) { RefreshEventData eventData = new RefreshEventData(); String endpoint = client.getEndpoint(); - if (featureStore.getEnabled() && StateHolder.getLoadStateFeatureFlag(endpoint)) { - refreshWithoutTimeFeatureFlags(client, featureStore, - StateHolder.getStateFeatureFlag(endpoint).getWatchKeys(), eventData, profiles); + if (featureStore.getEnabled() && StateHolder.getStateFeatureFlag(endpoint) != null) { + refreshWithoutTimeFeatureFlags(client, StateHolder.getStateFeatureFlag(endpoint), eventData); } else { LOGGER.debug("Skipping feature flag refresh check for " + endpoint); } @@ -165,9 +159,9 @@ private static boolean refreshStoreFeatureFlagCheck(FeatureFlagStore featureStor * @param eventData Info for this refresh event. */ private static void refreshWithTime(AppConfigurationReplicaClient client, State state, Duration refreshInterval, - RefreshEventData eventData) throws AppConfigurationStatusException { + RefreshEventData eventData, ReplicaLookUp replicaLookUp) throws AppConfigurationStatusException { if (Instant.now().isAfter(state.getNextRefreshCheck())) { - + replicaLookUp.updateAutoFailoverEndpoints(); refreshWithoutTime(client, state.getWatchKeys(), eventData); StateHolder.getCurrentState().updateStateRefresh(state, refreshInterval); @@ -197,100 +191,38 @@ private static void refreshWithoutTime(AppConfigurationReplicaClient client, Lis } } - private static void refreshWithTimeFeatureFlags(AppConfigurationReplicaClient client, FeatureFlagStore featureStore, - State state, Duration refreshInterval, RefreshEventData eventData, List profiles) + private static void refreshWithTimeFeatureFlags(AppConfigurationReplicaClient client, FeatureFlagState state, + Duration refreshInterval, RefreshEventData eventData, ReplicaLookUp replicaLookUp) throws AppConfigurationStatusException { Instant date = Instant.now(); if (date.isAfter(state.getNextRefreshCheck())) { + replicaLookUp.updateAutoFailoverEndpoints(); - int watchedKeySize = 0; - - for (FeatureFlagKeyValueSelector watchKey : featureStore.getSelects()) { - String keyFilter = SELECT_ALL_FEATURE_FLAGS; - - if (StringUtils.hasText(watchKey.getKeyFilter())) { - keyFilter = FEATURE_FLAG_PREFIX + watchKey.getKeyFilter(); - } + for (FeatureFlags featureFlags : state.getWatchKeys()) { - SettingSelector selector = - new SettingSelector().setKeyFilter(keyFilter).setLabelFilter(watchKey.getLabelFilterText(profiles)); - List currentKeys = client.listSettings(selector); + if (client.checkWatchKeys(featureFlags.getSettingSelector())) { + String eventDataInfo = ".appconfig.featureflag/*"; - watchedKeySize += checkFeatureFlags(currentKeys, state, client, eventData); - } + // Only one refresh Event needs to be call to update all of the + // stores, not one for each. + LOGGER.info("Configuration Refresh Event triggered by " + eventDataInfo); - if (!eventData.getDoRefresh() && watchedKeySize != state.getWatchKeys().size()) { - String eventDataInfo = ".appconfig.featureflag/*"; - - // Only one refresh Event needs to be call to update all of the - // stores, not one for each. - LOGGER.info("Configuration Refresh Event triggered by " + eventDataInfo); + eventData.setMessage(eventDataInfo); + return; + } - eventData.setMessage(eventDataInfo); } - StateHolder.getCurrentState().updateStateRefresh(state, refreshInterval); + StateHolder.getCurrentState().updateFeatureFlagStateRefresh(state, refreshInterval); } } - private static int checkFeatureFlags(List currentKeys, State state, - AppConfigurationReplicaClient client, RefreshEventData eventData) { - int watchedKeySize = 0; - for (ConfigurationSetting currentKey : currentKeys) { - if (currentKey instanceof FeatureFlagConfigurationSetting - && FEATURE_FLAG_CONTENT_TYPE.equals(currentKey.getContentType())) { - - watchedKeySize += 1; - for (ConfigurationSetting watchFlag : state.getWatchKeys()) { - - // If there is no result, etag will be considered empty. - // A refresh will trigger once the selector returns a value. - if (compairKeys(watchFlag, currentKey, client.getEndpoint(), eventData)) { - if (eventData.getDoRefresh()) { - return watchedKeySize; - } - } - } - } - } - return watchedKeySize; - } - - - private static void refreshWithoutTimeFeatureFlags(AppConfigurationReplicaClient client, - FeatureFlagStore featureStore, List watchKeys, RefreshEventData eventData, - List profiles) throws AppConfigurationStatusException { - for (FeatureFlagKeyValueSelector watchKey : featureStore.getSelects()) { - String keyFilter = SELECT_ALL_FEATURE_FLAGS; - - if (StringUtils.hasText(watchKey.getKeyFilter())) { - keyFilter = FEATURE_FLAG_PREFIX + watchKey.getKeyFilter(); - } - - SettingSelector selector = - new SettingSelector().setKeyFilter(keyFilter).setLabelFilter(watchKey.getLabelFilterText(profiles)); - List currentTriggerConfigurations = client.listSettings(selector); - - int watchedKeySize = 0; - - for (ConfigurationSetting currentTriggerConfiguration : currentTriggerConfigurations) { - watchedKeySize += 1; - for (ConfigurationSetting watchFlag : watchKeys) { + private static void refreshWithoutTimeFeatureFlags(AppConfigurationReplicaClient client, FeatureFlagState watchKeys, + RefreshEventData eventData) throws AppConfigurationStatusException { - // If there is no result, etag will be considered empty. - // A refresh will trigger once the selector returns a value. - if (compairKeys(watchFlag, currentTriggerConfiguration, client.getEndpoint(), eventData)) { - if (eventData.getDoRefresh()) { - return; - } - } else { - break; - } + for (FeatureFlags featureFlags : watchKeys.getWatchKeys()) { - } - } - - if (watchedKeySize != watchKeys.size()) { + if (client.checkWatchKeys(featureFlags.getSettingSelector())) { String eventDataInfo = ".appconfig.featureflag/*"; // Only one refresh Event needs to be call to update all of the @@ -299,17 +231,8 @@ private static void refreshWithoutTimeFeatureFlags(AppConfigurationReplicaClient eventData.setMessage(eventDataInfo); } - } - } - private static Boolean compairKeys(ConfigurationSetting key1, ConfigurationSetting key2, String endpoint, - RefreshEventData eventData) { - if (key1 != null && key1.getKey().equals(key2.getKey()) && key1.getLabel().equals(key2.getLabel())) { - checkETag(key1, key2, endpoint, eventData); - return true; } - return false; - } private static void checkETag(ConfigurationSetting watchSetting, ConfigurationSetting currentTriggerConfiguration, diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClient.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClient.java index bfd8c5471335..7e55d4b6622c 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClient.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClient.java @@ -10,14 +10,21 @@ import org.springframework.util.StringUtils; import com.azure.core.exception.HttpResponseException; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.MatchConditions; import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponse; import com.azure.data.appconfiguration.ConfigurationClient; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.ConfigurationSnapshot; +import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; import com.azure.data.appconfiguration.models.SettingSelector; import com.azure.data.appconfiguration.models.SnapshotComposition; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; +import io.netty.handler.codec.http.HttpResponseStatus; + /** * Client for connecting to App Configuration when multiple replicas are in use. */ @@ -92,14 +99,7 @@ ConfigurationSetting getWatchKey(String key, String label) this.failedAttempts = 0; return watchKey; } catch (HttpResponseException e) { - if (e.getResponse() != null) { - int statusCode = e.getResponse().getStatusCode(); - - if (statusCode == 429 || statusCode == 408 || statusCode >= 500) { - throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue()); - } - } - throw e; + throw hanndleHttpResponseException(e); } catch (UncheckedIOException e) { throw new AppConfigurationStatusException(e.getMessage(), null, null); } @@ -116,18 +116,38 @@ List listSettings(SettingSelector settingSelector) List configurationSettings = new ArrayList<>(); try { PagedIterable settings = client.listConfigurationSettings(settingSelector); + settings.forEach(setting -> { + configurationSettings.add(NormalizeNull.normalizeNullLabel(setting)); + }); + // Needs to happen after or we don't know if the request succeeded or failed. this.failedAttempts = 0; - settings.forEach(setting -> configurationSettings.add(NormalizeNull.normalizeNullLabel(setting))); return configurationSettings; } catch (HttpResponseException e) { - if (e.getResponse() != null) { - int statusCode = e.getResponse().getStatusCode(); + throw hanndleHttpResponseException(e); + } catch (UncheckedIOException e) { + throw new AppConfigurationStatusException(e.getMessage(), null, null); + } + } - if (statusCode == 429 || statusCode == 408 || statusCode >= 500) { - throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue()); + FeatureFlags listFeatureFlags(SettingSelector settingSelector) throws HttpResponseException { + List configurationSettings = new ArrayList<>(); + List checks = new ArrayList<>(); + try { + client.listConfigurationSettings(settingSelector).streamByPage().forEach(pagedResponse -> { + checks.add( + new MatchConditions().setIfNoneMatch(pagedResponse.getHeaders().getValue(HttpHeaderName.ETAG))); + for (ConfigurationSetting featureFlag : pagedResponse.getValue()) { + configurationSettings + .add((FeatureFlagConfigurationSetting) NormalizeNull.normalizeNullLabel(featureFlag)); } - } - throw e; + }); + + // Needs to happen after or we don't know if the request succeeded or failed. + this.failedAttempts = 0; + settingSelector.setMatchConditions(checks); + return new FeatureFlags(settingSelector, configurationSettings); + } catch (HttpResponseException e) { + throw hanndleHttpResponseException(e); } catch (UncheckedIOException e) { throw new AppConfigurationStatusException(e.getMessage(), null, null); } @@ -146,19 +166,18 @@ List listSettingSnapshot(String snapshotName) { settings.forEach(setting -> configurationSettings.add(NormalizeNull.normalizeNullLabel(setting))); return configurationSettings; } catch (HttpResponseException e) { - if (e.getResponse() != null) { - int statusCode = e.getResponse().getStatusCode(); - - if (statusCode == 429 || statusCode == 408 || statusCode >= 500) { - throw new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue()); - } - } - throw e; + throw hanndleHttpResponseException(e); } catch (UncheckedIOException e) { throw new AppConfigurationStatusException(e.getMessage(), null, null); } } + Boolean checkWatchKeys(SettingSelector settingSelector) { + List> results = client.listConfigurationSettings(settingSelector) + .streamByPage().filter(pagedResponse -> pagedResponse.getStatusCode() != 304).toList(); + return results.size() > 0; + } + /** * Update the sync token for a client store. * @param syncToken the sync token. @@ -169,6 +188,19 @@ void updateSyncToken(String syncToken) { } } + private HttpResponseException hanndleHttpResponseException(HttpResponseException e) { + if (e.getResponse() != null) { + int statusCode = e.getResponse().getStatusCode(); + + if (statusCode == HttpResponseStatus.TOO_MANY_REQUESTS.code() + || statusCode == HttpResponseStatus.REQUEST_TIMEOUT.code() + || statusCode >= HttpResponseStatus.INTERNAL_SERVER_ERROR.code()) { + return new AppConfigurationStatusException(e.getMessage(), e.getResponse(), e.getValue()); + } + } + return e; + } + TracingInfo getTracingInfo() { return tracingInfo; } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactory.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactory.java index 1c25cecfa567..4f3fd987cc2f 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactory.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactory.java @@ -7,6 +7,7 @@ import java.util.Map; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationStoreHealth; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; /** @@ -25,12 +26,12 @@ public class AppConfigurationReplicaClientFactory { * @param configStores configuration info for config stores */ public AppConfigurationReplicaClientFactory(AppConfigurationReplicaClientsBuilder clientBuilder, - List configStores) { + List configStores, ReplicaLookUp replicaLookUp) { this.configStores = configStores; if (CONNECTIONS.size() == 0) { for (ConfigStore store : configStores) { - ConnectionManager manager = new ConnectionManager(clientBuilder, store); - CONNECTIONS.put(manager.getOriginEndpoint(), manager); + ConnectionManager manager = new ConnectionManager(clientBuilder, store, replicaLookUp); + CONNECTIONS.put(manager.getMainEndpoint(), manager); } } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientsBuilder.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientsBuilder.java index ce0797446727..bb44bee61445 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientsBuilder.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientsBuilder.java @@ -2,12 +2,15 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation; +import java.net.MalformedURLException; +import java.net.URL; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.convert.DurationStyle; @@ -15,18 +18,20 @@ import org.springframework.core.env.Environment; import org.springframework.util.Assert; import org.springframework.util.StringUtils; + import com.azure.core.http.policy.ExponentialBackoff; import com.azure.core.http.policy.RetryPolicy; import com.azure.core.http.policy.RetryStrategy; import com.azure.core.util.Configuration; +import com.azure.core.util.CoreUtils; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.identity.ManagedIdentityCredentialBuilder; import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.BaseAppConfigurationPolicy; import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; import com.azure.spring.cloud.core.service.AzureServiceType.AppConfiguration; @@ -61,7 +66,8 @@ public class AppConfigurationReplicaClientsBuilder implements EnvironmentAware { /** * Invalid Formatted Connection String Error message */ - public static final String ENDPOINT_ERR_MSG = String.format("Connection string does not follow format %s.", CONN_STRING_REGEXP); + public static final String ENDPOINT_ERR_MSG = String.format("Connection string does not follow format %s.", + CONN_STRING_REGEXP); private static final Pattern CONN_STRING_PATTERN = Pattern.compile(CONN_STRING_REGEXP); @@ -79,7 +85,8 @@ public class AppConfigurationReplicaClientsBuilder implements EnvironmentAware { private final int defaultMaxRetries; - public AppConfigurationReplicaClientsBuilder(int defaultMaxRetries, ConfigurationClientBuilderFactory clientFactory, boolean credentialConfigured) { + public AppConfigurationReplicaClientsBuilder(int defaultMaxRetries, ConfigurationClientBuilderFactory clientFactory, + boolean credentialConfigured) { this.defaultMaxRetries = defaultMaxRetries; this.clientFactory = clientFactory; this.credentialConfigured = credentialConfigured; @@ -132,13 +139,16 @@ List buildClients(ConfigStore configStore) { int hasMultiConnectionString = configStore.getConnectionStrings().size() > 0 ? 1 : 0; if (hasSingleConnectionString + hasMultiEndpoints + hasMultiConnectionString > 1) { - throw new IllegalArgumentException("More than 1 Connection method was set for connecting to App Configuration."); + throw new IllegalArgumentException( + "More than 1 connection method was set for connecting to App Configuration."); } - boolean connectionStringIsPresent = configStore.getConnectionString() != null || configStore.getConnectionStrings().size() > 0; + boolean connectionStringIsPresent = configStore.getConnectionString() != null + || configStore.getConnectionStrings().size() > 0; if (credentialConfigured && connectionStringIsPresent) { - throw new IllegalArgumentException("More than 1 Connection method was set for connecting to App Configuration."); + throw new IllegalArgumentException( + "More than 1 connection method was set for connecting to App Configuration."); } List connectionStrings = configStore.getConnectionStrings(); @@ -158,7 +168,7 @@ List buildClients(ConfigStore configStore) { String endpoint = getEndpointFromConnectionString(connectionString); LOGGER.debug("Connecting to " + endpoint + " using Connecting String."); ConfigurationClientBuilder builder = createBuilderInstance().connectionString(connectionString); - + clients.add(modifyAndBuildClient(builder, endpoint, connectionStrings.size() - 1)); } } else { @@ -167,9 +177,8 @@ List buildClients(ConfigStore configStore) { if (!credentialConfigured) { // System Assigned Identity. Needs to be checked last as all of the above should // have an Endpoint. - LOGGER.debug("Connecting to {} using Azure System Assigned Identity or Azure User Assigned Identity.", endpoint); - ManagedIdentityCredentialBuilder micBuilder = new ManagedIdentityCredentialBuilder(); - builder.credential(micBuilder.build()); + LOGGER.debug("Connecting to {} using Azure System Assigned Identity.", endpoint); + builder.credential(new ManagedIdentityCredentialBuilder().build()); } builder.endpoint(endpoint); @@ -180,8 +189,35 @@ List buildClients(ConfigStore configStore) { return clients; } - private AppConfigurationReplicaClient modifyAndBuildClient(ConfigurationClientBuilder builder, String endpoint, Integer replicaCount) { - TracingInfo tracingInfo = new TracingInfo(isDev, isKeyVaultConfigured, replicaCount, Configuration.getGlobalConfiguration()); + public AppConfigurationReplicaClient buildClient(String failoverEndpoint, ConfigStore configStore) { + + if (StringUtils.hasText(configStore.getConnectionString())) { + ConnectionString connectionString = new ConnectionString(configStore.getConnectionString()); + connectionString.setUri(failoverEndpoint); + ConfigurationClientBuilder builder = createBuilderInstance().connectionString(connectionString.toString()); + return modifyAndBuildClient(builder, failoverEndpoint, 0); + } else if (configStore.getConnectionStrings().size() > 0) { + ConnectionString connectionString = new ConnectionString(configStore.getConnectionStrings().get(0)); + connectionString.setUri(failoverEndpoint); + ConfigurationClientBuilder builder = createBuilderInstance().connectionString(connectionString.toString()); + return modifyAndBuildClient(builder, failoverEndpoint, 0); + } else { + ConfigurationClientBuilder builder = createBuilderInstance(); + if (!credentialConfigured) { + // System Assigned Identity. Needs to be checked last as all of the above should + // have an Endpoint. + LOGGER.debug("Connecting to {} using Azure System Assigned Identity.", failoverEndpoint); + builder.credential(new ManagedIdentityCredentialBuilder().build()); + } + builder.endpoint(failoverEndpoint); + return modifyAndBuildClient(builder, failoverEndpoint, 0); + } + } + + private AppConfigurationReplicaClient modifyAndBuildClient(ConfigurationClientBuilder builder, String endpoint, + Integer replicaCount) { + TracingInfo tracingInfo = new TracingInfo(isDev, isKeyVaultConfigured, replicaCount, + Configuration.getGlobalConfiguration()); builder.addPolicy(new BaseAppConfigurationPolicy(tracingInfo)); if (clientProvider != null) { @@ -211,10 +247,13 @@ protected ConfigurationClientBuilder createBuilderInstance() { Function checkPropertyInt = parameter -> (Integer.parseInt(parameter)); Function checkPropertyDuration = parameter -> (DurationStyle.detectAndParse(parameter)); - int retries = checkProperty(MAX_RETRIES_PROPERTY_NAME, defaultMaxRetries, " isn't a valid integer, using default value.", checkPropertyInt); + int retries = checkProperty(MAX_RETRIES_PROPERTY_NAME, defaultMaxRetries, + " isn't a valid integer, using default value.", checkPropertyInt); - Duration baseDelay = checkProperty(BASE_DELAY_PROPERTY_NAME, DEFAULT_MIN_RETRY_POLICY, " isn't a valid Duration, using default value.", checkPropertyDuration); - Duration maxDelay = checkProperty(MAX_DELAY_PROPERTY_NAME, DEFAULT_MAX_RETRY_POLICY, " isn't a valid Duration, using default value.", checkPropertyDuration); + Duration baseDelay = checkProperty(BASE_DELAY_PROPERTY_NAME, DEFAULT_MIN_RETRY_POLICY, + " isn't a valid Duration, using default value.", checkPropertyDuration); + Duration maxDelay = checkProperty(MAX_DELAY_PROPERTY_NAME, DEFAULT_MAX_RETRY_POLICY, + " isn't a valid Duration, using default value.", checkPropertyDuration); retryStatagy = new ExponentialBackoff(retries, baseDelay, maxDelay); } @@ -249,11 +288,12 @@ private T checkProperty(String propertyName, T defaultValue, String errMsg, return value; } - - private static class ConnectionStringConnector implements ServiceConnectionStringProvider { - + + private static class ConnectionStringConnector + implements ServiceConnectionStringProvider { + private final String connectionString; - + ConnectionStringConnector(String connectionString) { this.connectionString = connectionString; } @@ -268,4 +308,66 @@ public AppConfiguration getServiceType() { return null; } } + + private static class ConnectionString { + private static final String ENDPOINT = "Endpoint="; + + private static final String ID = "Id="; + + private static final String SECRET_PREFIX = "Secret="; + + private URL baseUri; + + private final String id; + + private final String secret; + + ConnectionString(String connectionString) { + if (CoreUtils.isNullOrEmpty(connectionString)) { + throw new IllegalArgumentException("'connectionString' cannot be null or empty."); + } + String[] args = connectionString.split(";"); + if (args.length < 3) { + throw new IllegalArgumentException("invalid connection string segment count"); + } + URL baseUri = null; + String id = null; + String secret = null; + for (String arg : args) { + String segment = arg.trim(); + if (ENDPOINT.regionMatches(true, 0, segment, 0, ENDPOINT.length())) { + try { + baseUri = new URL(segment.substring(ENDPOINT.length())); + } catch (MalformedURLException ex) { + throw new IllegalArgumentException(ex); + } + } else if (ID.regionMatches(true, 0, segment, 0, ID.length())) { + id = segment.substring(ID.length()); + } else if (SECRET_PREFIX.regionMatches(true, 0, segment, 0, SECRET_PREFIX.length())) { + secret = segment.substring(SECRET_PREFIX.length()); + } + } + this.baseUri = baseUri; + this.id = id; + this.secret = secret; + if (this.baseUri == null || CoreUtils.isNullOrEmpty(this.id) + || this.secret == null || this.secret.length() == 0) { + throw new IllegalArgumentException("Could not parse 'connectionString'." + + " Expected format: 'endpoint={endpoint};id={id};secret={secret}'. Actual:" + connectionString); + } + } + + protected ConnectionString setUri(String uri) { + try { + this.baseUri = new URL(uri); + } catch (MalformedURLException ex) { + throw new IllegalArgumentException(ex); + } + return this; + } + + public String toString() { + return String.format("%s%s;%s%s;%s%s", ENDPOINT, baseUri, ID, id, SECRET_PREFIX, secret); + } + } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationSnapshotPropertySource.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationSnapshotPropertySource.java index e0d6eae181b2..e4569b384150 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationSnapshotPropertySource.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationSnapshotPropertySource.java @@ -2,14 +2,14 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_PREFIX; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_MANAGEMENT_KEY; - +import java.util.ArrayList; import java.util.List; +import org.springframework.boot.context.properties.source.InvalidConfigurationPropertyValueException; + +import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; -import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; -import com.fasterxml.jackson.core.JsonProcessingException; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; /** * Azure App Configuration PropertySource unique per Store Label(Profile) combo. @@ -22,43 +22,38 @@ final class AppConfigurationSnapshotPropertySource extends AppConfigurationAppli private final String snapshotName; + private final FeatureFlagClient featureFlagClient; + + private List featureFlagsList = new ArrayList<>(); + AppConfigurationSnapshotPropertySource(String name, AppConfigurationReplicaClient replicaClient, - AppConfigurationKeyVaultClientFactory keyVaultClientFactory, String snapshotName) { + AppConfigurationKeyVaultClientFactory keyVaultClientFactory, String snapshotName, + FeatureFlagClient featureFlagClient) { // The context alone does not uniquely define a PropertySource, append storeName // and label to uniquely define a PropertySource - // super(snapshotName + originEndpoint + "/", replicaClient, maxRetryTime); super(name, replicaClient, keyVaultClientFactory, null, null); this.snapshotName = snapshotName; + this.featureFlagClient = featureFlagClient; } /** *

* Gets settings from Azure/Cache to set as configurations. Updates the cache. *

- * + * * @param trim prefix to trim - * @throws JsonProcessingException thrown if fails to parse Json content type + * @throws InvalidConfigurationPropertyValueException thrown if fails to parse Json content type */ - public void initProperties(List trim) throws JsonProcessingException { + public void initProperties(List trim) throws InvalidConfigurationPropertyValueException { processConfigurationSettings(replicaClient.listSettingSnapshot(snapshotName), null, trim); + + FeatureFlags featureFlags = new FeatureFlags(null, featureFlagsList); + featureFlagClient.proccessFeatureFlags(featureFlags, replicaClient.getEndpoint()); } @Override - void handleFeatureFlag(String key, FeatureFlagConfigurationSetting setting, List trimStrings) - throws JsonProcessingException { + void handleFeatureFlag(String key, FeatureFlagConfigurationSetting setting, List trimStrings) { // Feature Flags are only part of this if they come from a snapshot - processFeatureFlag(key, setting, trimStrings); - } - - protected void processFeatureFlag(String key, FeatureFlagConfigurationSetting setting, List trimStrings) { - TracingInfo tracing = replicaClient.getTracingInfo(); - featureConfigurationSettings.add(setting); - FeatureFlagConfigurationSetting featureFlag = setting; - - String configName = FEATURE_MANAGEMENT_KEY + setting.getKey().trim().substring(FEATURE_FLAG_PREFIX.length()); - - AppConfigurationFeatureManagementPropertySource.updateTelemetry(featureFlag, tracing); - - properties.put(configName, AppConfigurationFeatureManagementPropertySource.createFeature(featureFlag)); + featureFlagsList.add(setting); } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationStatusException.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationStatusException.java index d51d3b0f3846..9720dd849d23 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationStatusException.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationStatusException.java @@ -13,6 +13,4 @@ class AppConfigurationStatusException extends HttpResponseException { private static final long serialVersionUID = -2388602959090868645L; - - } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManager.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManager.java index e7cca0856e00..16c6d2d05fdc 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManager.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManager.java @@ -4,13 +4,16 @@ import java.time.Instant; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationStoreHealth; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreMonitoring; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagStore; @@ -27,6 +30,8 @@ public class ConnectionManager { // Used if multiple connection method is given. private List clients; + private Map autoFailoverClients; + private String currentReplica; private AppConfigurationStoreHealth health; @@ -35,17 +40,22 @@ public class ConnectionManager { private final ConfigStore configStore; + private final ReplicaLookUp replicaLookUp; + /** * Creates a set of connections to an app configuration store. * @param clientBuilder Builder for App Configuration Clients * @param configStore Connection info for the store */ - ConnectionManager(AppConfigurationReplicaClientsBuilder clientBuilder, ConfigStore configStore) { + ConnectionManager(AppConfigurationReplicaClientsBuilder clientBuilder, ConfigStore configStore, + ReplicaLookUp replicaLookUp) { this.clientBuilder = clientBuilder; this.configStore = configStore; this.originEndpoint = configStore.getEndpoint(); this.health = AppConfigurationStoreHealth.NOT_LOADED; this.currentReplica = configStore.getEndpoint(); + this.autoFailoverClients = new HashMap<>(); + this.replicaLookUp = replicaLookUp; } /** @@ -63,7 +73,7 @@ void setCurrentClient(String replicaEndpoint) { /** * @return the originEndpoint */ - String getOriginEndpoint() { + String getMainEndpoint() { return originEndpoint; } @@ -92,7 +102,9 @@ List getAvailableClients(Boolean useCurrent) { boolean foundCurrent = !useCurrent; if (clients.size() == 1) { - availableClients.add(clients.get(0)); + if (clients.get(0).getBackoffEndTime().isBefore(Instant.now())) { + availableClients.add(clients.get(0)); + } } else if (clients.size() > 0) { for (AppConfigurationReplicaClient replicaClient : clients) { if (replicaClient.getEndpoint().equals(currentReplica)) { @@ -103,18 +115,39 @@ List getAvailableClients(Boolean useCurrent) { availableClients.add(replicaClient); } } - if (availableClients.size() == 0) { - this.health = AppConfigurationStoreHealth.DOWN; - } else { - this.health = AppConfigurationStoreHealth.UP; + } + + if (availableClients.size() == 0) { + List autoFailoverEndpoints = replicaLookUp.getAutoFailoverEndpoints(configStore.getEndpoint()); + + if (autoFailoverEndpoints.size() > 0) { + for (String failoverEndpoint : autoFailoverEndpoints) { + AppConfigurationReplicaClient client = autoFailoverClients.get(failoverEndpoint); + if (client == null) { + client = clientBuilder.buildClient(failoverEndpoint, configStore); + autoFailoverClients.put(failoverEndpoint, client); + } + if (client.getBackoffEndTime().isBefore(Instant.now())) { + availableClients.add(client); + break; + } + } } } + if (clients.size() > 0 && availableClients.size() == 0) { + this.health = AppConfigurationStoreHealth.DOWN; + } else if (clients.size() > 0) { + this.health = AppConfigurationStoreHealth.UP; + } return availableClients; } List getAllEndpoints() { - return clients.stream().map(AppConfigurationReplicaClient::getEndpoint).collect(Collectors.toList()); + List endpoints = clients.stream().map(AppConfigurationReplicaClient::getEndpoint) + .collect(Collectors.toList()); + endpoints.addAll(replicaLookUp.getAutoFailoverEndpoints(configStore.getEndpoint())); + return endpoints; } /** @@ -127,9 +160,13 @@ void backoffClient(String endpoint) { int failedAttempt = client.getFailedAttempts(); long backoffTime = BackoffTimeCalculator.calculateBackoff(failedAttempt); client.updateBackoffEndTime(Instant.now().plusNanos(backoffTime)); - break; + return; } } + + int failedAttempt = autoFailoverClients.get(endpoint).getFailedAttempts(); + long backoffTime = BackoffTimeCalculator.calculateBackoff(failedAttempt); + autoFailoverClients.get(endpoint).updateBackoffEndTime(Instant.now().plusNanos(backoffTime)); } /** @@ -140,6 +177,8 @@ void backoffClient(String endpoint) { void updateSyncToken(String endpoint, String syncToken) { clients.stream().filter(client -> client.getEndpoint().equals(endpoint)).findFirst() .ifPresent(client -> client.updateSyncToken(syncToken)); + autoFailoverClients.values().stream().filter(client -> client.getEndpoint().equals(endpoint)).findFirst() + .ifPresent(client -> client.updateSyncToken(syncToken)); } AppConfigurationStoreMonitoring getMonitoring() { diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/FeatureFlagClient.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/FeatureFlagClient.java new file mode 100644 index 000000000000..4a4fb7ee4219 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/FeatureFlagClient.java @@ -0,0 +1,168 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation; + +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.CONDITIONS; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_REQUIREMENT_TYPE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.E_TAG; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_CONTENT_TYPE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_ID; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_PREFIX; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_REFERENCE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.REQUIREMENT_TYPE_SERVICE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.SELECT_ALL_FEATURE_FLAGS; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.TELEMETRY; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.bouncycastle.jcajce.provider.digest.SHA256; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; +import com.azure.data.appconfiguration.models.SettingSelector; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.Feature; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.FeatureTelemetry; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.nimbusds.jose.util.Base64URL; + +/** + * Loads sets of feature flags, and de-duplicates the results with previously loaded feature flags. Newer Feature Flags + * take priority. + */ +@Component +public class FeatureFlagClient { + + protected final Map properties = new LinkedHashMap<>(); + + private static final ObjectMapper CASE_INSENSITIVE_MAPPER = JsonMapper.builder() + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true).build(); + + /** + *

+ * Gets settings from Azure/Cache to set as configurations. Updates the cache. + *

+ * + *

+ * Note: Doesn't update Feature Management, just stores values in cache. Call {@code initFeatures} to update + * Feature Management, but make sure its done in the last {@code AppConfigurationPropertySource} + * AppConfigurationPropertySource} + *

+ * + */ + public List loadFeatureFlags(AppConfigurationReplicaClient replicaClient, String customKeyFilter, + String[] labelFilter) { + List loadedFeatureFlags = new ArrayList<>(); + + String keyFilter = SELECT_ALL_FEATURE_FLAGS; + + if (StringUtils.hasText(customKeyFilter)) { + keyFilter = FEATURE_FLAG_PREFIX + customKeyFilter; + } + + List labels = Arrays.asList(labelFilter); + Collections.reverse(labels); + + for (String label : labels) { + SettingSelector settingSelector = new SettingSelector().setKeyFilter(keyFilter).setLabelFilter(label); + + FeatureFlags features = replicaClient.listFeatureFlags(settingSelector); + loadedFeatureFlags.addAll(proccessFeatureFlags(features, keyFilter)); + } + return loadedFeatureFlags; + } + + public List proccessFeatureFlags(FeatureFlags features, String endpoint) { + List loadedFeatureFlags = new ArrayList<>(); + loadedFeatureFlags.add(features); + + // Reading In Features + for (ConfigurationSetting setting : features.getFeatureFlags()) { + if (setting instanceof FeatureFlagConfigurationSetting + && FEATURE_FLAG_CONTENT_TYPE.equals(setting.getContentType())) { + FeatureFlagConfigurationSetting featureFlag = (FeatureFlagConfigurationSetting) setting; + properties.put(featureFlag.getKey(), createFeature(featureFlag, endpoint)); + } + } + return loadedFeatureFlags; + } + + /** + * Creates a {@code Feature} from a {@code KeyValueItem} + * + * @param item Used to create Features before being converted to be set into properties. + * @return Feature created from KeyValueItem + */ + protected static Feature createFeature(FeatureFlagConfigurationSetting item, String originEndpoint) { + String requirementType = DEFAULT_REQUIREMENT_TYPE; + FeatureTelemetry featureTelemetry = new FeatureTelemetry(); + try { + JsonNode node = CASE_INSENSITIVE_MAPPER.readTree(item.getValue()); + JsonNode conditions = node.get(CONDITIONS); + if (conditions != null && conditions.get(REQUIREMENT_TYPE_SERVICE) != null) { + requirementType = conditions.get(REQUIREMENT_TYPE_SERVICE).asText(); + } + JsonNode telemetryNode = node.get(TELEMETRY); + if (telemetryNode != null) { + ObjectMapper objectMapper = JsonMapper.builder() + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true).build(); + featureTelemetry = objectMapper.convertValue(telemetryNode, FeatureTelemetry.class); + } + } catch (JsonProcessingException e) { + + } + + Feature feature = new Feature(item, requirementType, featureTelemetry); + + if (feature.getTelemetry() != null) { + final FeatureTelemetry telemetry = feature.getTelemetry(); + if (telemetry.isEnabled()) { + final Map originMetadata = telemetry.getMetadata(); + originMetadata.put(FEATURE_FLAG_ID, calculateFeatureFlagId(item.getKey(), item.getLabel())); + originMetadata.put(E_TAG, item.getETag()); + if (originEndpoint != null && !originEndpoint.isEmpty()) { + final String labelPart = item.getLabel().isEmpty() ? "" + : String.format("?label=%s", item.getLabel()); + originMetadata.put(FEATURE_FLAG_REFERENCE, + String.format("%s/kv/%s%s", originEndpoint, item.getKey(), labelPart)); + } + } + } + return feature; + } + + /** + * @param key the key of feature flag + * @param label the label of feature flag. If label is whitespace, treat as null + * @return base64_url(SHA256(utf8_bytes("${key}\n${label}"))).replace('+', '-').replace('/', '_').trimEnd('=') + * trimEnd() means trims everything after the first occurrence of the '=' + */ + private static String calculateFeatureFlagId(String key, String label) { + final String data = String.format("%s\n%s", key, label.isEmpty() ? null : label); + final SHA256.Digest digest = new SHA256.Digest(); + final String beforeTrim = Base64URL.encode(digest.digest(data.getBytes(StandardCharsets.UTF_8))) + .toString().replace('+', '-').replace('/', '_'); + final int index = beforeTrim.indexOf('='); + return beforeTrim.substring(0, index > -1 ? index : beforeTrim.length()); + } + + /** + * @return the properties + */ + public Map getProperties() { + return properties; + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/JsonConfigurationParser.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/JsonConfigurationParser.java index 06114efa47c2..78b6e5c7bfea 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/JsonConfigurationParser.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/JsonConfigurationParser.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; +import org.springframework.boot.context.properties.source.InvalidConfigurationPropertyValueException; import org.springframework.util.StringUtils; import com.azure.data.appconfiguration.models.ConfigurationSetting; @@ -44,10 +45,17 @@ static boolean isJsonContentType(String contentType) { } static Map parseJsonSetting(ConfigurationSetting setting) - throws JsonProcessingException { + throws InvalidConfigurationPropertyValueException { Map settings = new HashMap<>(); - JsonNode json = MAPPER.readTree(setting.getValue()); - parseSetting(setting.getKey(), json, settings); + try { + JsonNode json = MAPPER.readTree(setting.getValue()); + parseSetting(setting.getKey(), json, settings); + } catch (JsonProcessingException e) { + throw new InvalidConfigurationPropertyValueException( + setting.getKey(), + "", + "Expected type: JSON String, Number, Array, Object or token 'null', 'true' or 'false'"); + } return settings; } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolder.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolder.java index 105b7d39e5d9..9de8f3d08228 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolder.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolder.java @@ -11,16 +11,18 @@ import java.util.concurrent.ConcurrentHashMap; import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlagState; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; final class StateHolder { private static final int MAX_JITTER = 15; - private static final String FEATURE_ENDPOINT = "_feature"; - private static StateHolder currentState; private final Map state = new ConcurrentHashMap<>(); + + private final Map featureFlagState = new ConcurrentHashMap<>(); private final Map loadState = new ConcurrentHashMap<>(); @@ -51,6 +53,10 @@ static State getState(String originEndpoint) { private Map getFullState() { return state; } + + private Map getFullFeatureFlagState() { + return featureFlagState; + } private Map getFullLoadState() { return loadState; @@ -60,8 +66,8 @@ private Map getFullLoadState() { * @param originEndpoint the endpoint for the origin config store * @return the state */ - static State getStateFeatureFlag(String originEndpoint) { - return currentState.getFullState().get(originEndpoint + FEATURE_ENDPOINT); + static FeatureFlagState getStateFeatureFlag(String originEndpoint) { + return currentState.getFullFeatureFlagState().get(originEndpoint); } /** @@ -78,9 +84,9 @@ void setState(String originEndpoint, List watchKeys, Durat * @param watchKeys list of configuration watch keys that can trigger a refresh event * @param duration refresh duration. */ - void setStateFeatureFlag(String originEndpoint, List watchKeys, + void setStateFeatureFlag(String originEndpoint, List watchKeys, Duration duration) { - setState(originEndpoint + FEATURE_ENDPOINT, watchKeys, duration); + featureFlagState.put(originEndpoint, new FeatureFlagState(watchKeys, Math.toIntExact(duration.getSeconds()), originEndpoint)); } /** @@ -96,6 +102,11 @@ void updateStateRefresh(State state, Duration duration) { this.state.put(state.getOriginEndpoint(), new State(state, Instant.now().plusSeconds(Math.toIntExact(duration.getSeconds())))); } + + void updateFeatureFlagStateRefresh(FeatureFlagState state, Duration duration) { + this.featureFlagState.put(state.getOriginEndpoint(), + new FeatureFlagState(state, Instant.now().plusSeconds(Math.toIntExact(duration.getSeconds())))); + } void expireState(String originEndpoint) { State oldState = state.get(originEndpoint); @@ -114,13 +125,6 @@ static boolean getLoadState(String originEndpoint) { return currentState.getFullLoadState().getOrDefault(originEndpoint, false); } - /** - * @return the loadState - */ - static boolean getLoadStateFeatureFlag(String originEndpoint) { - return getLoadState(originEndpoint + FEATURE_ENDPOINT); - } - Map getLoadState() { return loadState; } @@ -138,15 +142,6 @@ void setLoadState(String originEndpoint, Boolean loaded, Boolean failFast) { } } - /** - * @param originEndpoint the configuration store connected to. - * @param loaded true if the configuration store was loaded and uses feature flags. - * @param failFast application started after it failed to load from a store. - */ - void setLoadStateFeatureFlag(String originEndpoint, Boolean loaded, Boolean failFast) { - setLoadState(originEndpoint + FEATURE_ENDPOINT, loaded, failFast); - } - /** * @return the nextForcedRefresh */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/ReplicaLookUp.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/ReplicaLookUp.java new file mode 100644 index 000000000000..93d91a301b85 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/ReplicaLookUp.java @@ -0,0 +1,225 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.autofailover; + +import java.net.URI; +import java.net.URISyntaxException; +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Semaphore; + +import javax.naming.NameNotFoundException; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.InitialDirContext; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationReplicaClientsBuilder; +import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; +import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; + +@Component +public class ReplicaLookUp { + + private static final Logger LOGGER = LoggerFactory.getLogger(ReplicaLookUp.class); + + private static final String ORIGIN_PREFIX = "dns:/_origin._tcp."; + + private static final String REPLICA_PREFIX_ALT = "dns:/_alt"; + + private static final String REPLICA_PREFIX_TCP = "._tcp."; + + private static final String SRC_RECORD = "SRV"; + + private static final String[] TRUSTED_DOMAIN_LABELS = { "azconfig", "appconfig" }; + + private static final Duration FALLBACK_CLIENT_REFRESH_EXPIRED_INTERVAL = Duration.ofHours(1); + + private static final Duration MINIMAL_CLIENT_REFRESH_INTERVAL = Duration.ofSeconds(30); + + InitialDirContext context; + + private Map> records = new HashMap>(); + + private Map wait = new HashMap<>(); + + private final AppConfigurationProperties properties; + + private final Semaphore semaphore; + + public ReplicaLookUp(AppConfigurationProperties properties) throws NamingException { + this.properties = properties; + this.context = new InitialDirContext(); + this.semaphore = new Semaphore(1); + } + + @Async + public void updateAutoFailoverEndpoints() { + if (semaphore.tryAcquire()) { + for (ConfigStore configStore : properties.getStores()) { + if (!configStore.isEnabled() || !configStore.isReplicaDiscoveryEnabled()) { + continue; + } + String mainEndpoint = configStore.getEndpoint(); + + List providedEndpoints = new ArrayList<>(); + if (configStore.getConnectionStrings().size() > 0) { + providedEndpoints = configStore.getConnectionStrings().stream().map(connectionString -> { + return (AppConfigurationReplicaClientsBuilder + .getEndpointFromConnectionString(connectionString)); + }).toList(); + } else if (configStore.getEndpoints().size() > 0) { + providedEndpoints = configStore.getEndpoints(); + } else { + providedEndpoints = List.of(configStore.getEndpoint()); + } + + try { + List srvRecords = findAutoFailoverEndpoints(mainEndpoint, providedEndpoints); + + srvRecords.sort((SRVRecord a, SRVRecord b) -> a.compareTo(b)); + + records.put(mainEndpoint, srvRecords); + wait.put(mainEndpoint, Instant.now().plus(FALLBACK_CLIENT_REFRESH_EXPIRED_INTERVAL)); + } catch (AppConfigurationReplicaException e) { + LOGGER.warn("Failed to finde replicas due to: " + e.getMessage()); + wait.put(mainEndpoint, Instant.now().plus(MINIMAL_CLIENT_REFRESH_INTERVAL)); + } + + } + semaphore.release(); + } + } + + public List getAutoFailoverEndpoints(String mainEndpoint) { + List endpointRecords = records.get(mainEndpoint); + if (endpointRecords == null) { + return List.of(); + } + return endpointRecords.stream().map(record -> record.getEndpoint()).toList(); + } + + private List findAutoFailoverEndpoints(String endpoint, List providedEndpoints) + throws AppConfigurationReplicaException { + List records = new ArrayList<>(); + String host = ""; + try { + URI uri = new URI(endpoint); + host = uri.getHost(); + } catch (URISyntaxException e) { + // If endpoint uri is invalid then it will fail during startup + return new ArrayList<>(); + } + + SRVRecord origin = getOriginRecord(host); + if (origin != null) { + List replicas = getReplicaRecords(origin); + String knownDomain = getKnownDomain(endpoint); + + if (!providedEndpoints.contains(origin.getEndpoint()) && validate(knownDomain, origin.getEndpoint())) { + records.add(origin); + } + replicas.stream().forEach(replica -> { + if (!providedEndpoints.contains(replica.getEndpoint()) + && validate(knownDomain, replica.getEndpoint())) { + records.add(replica); + } + }); + } + return records; + } + + private SRVRecord getOriginRecord(String url) throws AppConfigurationReplicaException { + Attribute attribute = requestRecord(ORIGIN_PREFIX + url); + if (attribute != null) { + return parseHosts(attribute).get(0); + } + return null; + } + + private List getReplicaRecords(SRVRecord origin) throws AppConfigurationReplicaException { + List replicas = new ArrayList<>(); + int i = 0; + while (true) { + Attribute attribute = requestRecord( + REPLICA_PREFIX_ALT + i + REPLICA_PREFIX_TCP + origin.getTarget()); + + if (attribute == null) { + break; + } + + replicas.addAll(parseHosts(attribute)); + i++; + } + return replicas; + } + + private Attribute requestRecord(String name) throws AppConfigurationReplicaException { + Instant retryTime = Instant.now().plusSeconds(30); + while (retryTime.isAfter(Instant.now())) { + try { + return context.getAttributes(name, new String[] { SRC_RECORD }).get(SRC_RECORD); + } catch (NameNotFoundException e) { + // Found Last Record, should be the case that no SRV Record exists. + return null; + } catch (NamingException e) { + // Will retry for up to 30 seconds + } + } + throw new AppConfigurationReplicaException(); + } + + private List parseHosts(Attribute attribute) { + List hosts = new ArrayList<>(); + try { + NamingEnumeration records = attribute.getAll(); + while (records.hasMore()) { + hosts.add(new SRVRecord(((String) records.next()).toString().split(" "))); + } + } catch (NamingException e) { + } + + return hosts; + } + + private boolean validate(String knownDomain, String endpoint) { + if (!StringUtils.hasText(endpoint)) { + return false; + } + + if (!StringUtils.hasText(knownDomain)) { + return false; + } + return endpoint.endsWith(knownDomain); + } + + private String getKnownDomain(String knownHost) { + for (String label : TRUSTED_DOMAIN_LABELS) { + int index = knownHost.toLowerCase().indexOf("." + label + "."); + if (index > 0) { + return knownHost.substring(index); + } + } + return ""; + } + + private class AppConfigurationReplicaException extends Exception { + + /** + * + */ + private static final long serialVersionUID = 1L; + + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/SRVRecord.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/SRVRecord.java new file mode 100644 index 000000000000..9646b83527d9 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/SRVRecord.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.autofailover; + +public class SRVRecord { + + private final int priority; + + private final int weight; + + private final int port; + + private final String target; + + private static final String PROTOCAL = "https://"; + + public SRVRecord(String[] record) { + this.priority = Integer.valueOf(record[0]); + this.weight = Integer.valueOf(record[1]); + this.port = Integer.valueOf(record[2]); + this.target = record[3].substring(0, record[3].length() - 1); + } + + public int getPriority() { + return priority; + } + + public int getWeight() { + return weight; + } + + public int getPort() { + return port; + } + + public String getTarget() { + return target; + } + + public String getEndpoint() { + return PROTOCAL + target; + } + + public int compareTo(SRVRecord record) { + if (priority > record.getPriority()) { + return 1; + } + if (record.getPriority() > priority) { + return -1; + } + + if (weight > record.getWeight()) { + return 1; + } + if (record.getWeight() > weight) { + return -1; + } + + return 0; + } +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfiguration.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfiguration.java index 5320c5e44619..2573d3abf766 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfiguration.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfiguration.java @@ -2,6 +2,8 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation.config; +import javax.naming.NamingException; + import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -14,6 +16,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.util.StringUtils; import com.azure.data.appconfiguration.ConfigurationClientBuilder; @@ -24,14 +27,16 @@ import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationPropertySourceLocator; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationReplicaClientFactory; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationReplicaClientsBuilder; +import com.azure.spring.cloud.appconfiguration.config.implementation.FeatureFlagClient; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProviderProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.core.AbstractAzureHttpConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureGlobalPropertiesUtils; -import com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -47,6 +52,7 @@ @EnableConfigurationProperties({ AppConfigurationProperties.class, AppConfigurationProviderProperties.class }) @ConditionalOnClass(AppConfigurationPropertySourceLocator.class) @ConditionalOnProperty(prefix = AppConfigurationProperties.CONFIG_PREFIX, name = "enabled", matchIfMissing = true) +@EnableAsync public class AppConfigurationBootstrapConfiguration { @Autowired @@ -55,15 +61,17 @@ public class AppConfigurationBootstrapConfiguration { @Bean AppConfigurationPropertySourceLocator sourceLocator(AppConfigurationProperties properties, AppConfigurationProviderProperties appProperties, AppConfigurationReplicaClientFactory clientFactory, - AppConfigurationKeyVaultClientFactory keyVaultClientFactory) + AppConfigurationKeyVaultClientFactory keyVaultClientFactory, ReplicaLookUp replicaLookUp, + FeatureFlagClient featureFlagLoader) throws IllegalArgumentException { return new AppConfigurationPropertySourceLocator(appProperties, clientFactory, keyVaultClientFactory, - properties.getRefreshInterval(), properties.getStores()); + properties.getRefreshInterval(), properties.getStores(), replicaLookUp, featureFlagLoader); } @Bean - AppConfigurationKeyVaultClientFactory appConfigurationKeyVaultClientFactory(Environment environment, AppConfigurationProviderProperties appProperties) + AppConfigurationKeyVaultClientFactory appConfigurationKeyVaultClientFactory(Environment environment, + AppConfigurationProviderProperties appProperties) throws IllegalArgumentException { AzureGlobalProperties globalSource = Binder.get(environment).bindOrCreate(AzureGlobalProperties.PREFIX, AzureGlobalProperties.class); @@ -101,8 +109,19 @@ AppConfigurationKeyVaultClientFactory appConfigurationKeyVaultClientFactory(Envi @Bean @ConditionalOnMissingBean AppConfigurationReplicaClientFactory buildClientFactory(AppConfigurationReplicaClientsBuilder clientBuilder, - AppConfigurationProperties properties) { - return new AppConfigurationReplicaClientFactory(clientBuilder, properties.getStores()); + AppConfigurationProperties properties, ReplicaLookUp replicaLookUp) { + return new AppConfigurationReplicaClientFactory(clientBuilder, properties.getStores(), replicaLookUp); + } + + /** + * Loader for all feature flags. Enables de-duplicating of feature flags when multiple feature flags with the same + * name are loaded. + * @return {@link FeatureFlagClient} + */ + @Bean + @ConditionalOnMissingBean + FeatureFlagClient featureFlagLoader() { + return new FeatureFlagClient(); } /** @@ -151,6 +170,11 @@ AppConfigurationReplicaClientsBuilder replicaClientBuilder(Environment environme return clientBuilder; } + @Bean + ReplicaLookUp replicaLookUp(AppConfigurationProperties properties) throws NamingException { + return new ReplicaLookUp(properties); + } + private boolean isCredentialConfigured(AbstractAzureHttpConfigurationProperties properties) { if (properties.getCredential() != null) { TokenCredentialConfigurationProperties tokenProps = properties.getCredential(); diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/FeatureFlagState.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/FeatureFlagState.java new file mode 100644 index 000000000000..e63cfb80be7f --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/FeatureFlagState.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.feature; + +import java.time.Instant; +import java.util.List; + +public class FeatureFlagState { + + private final List watchKeys; + + private final Instant nextRefreshCheck; + + private final String originEndpoint; + + private Integer refreshAttempt; + + private final int refreshInterval; + + public FeatureFlagState(List watchKeys, int refreshInterval, String originEndpoint) { + this.watchKeys = watchKeys; + this.refreshInterval = refreshInterval; + nextRefreshCheck = Instant.now().plusSeconds(refreshInterval); + this.originEndpoint = originEndpoint; + this.refreshAttempt = 1; + } + + public FeatureFlagState(FeatureFlagState oldState, Instant newRefresh) { + this.watchKeys = oldState.getWatchKeys(); + this.refreshInterval = oldState.getRefreshInterval(); + this.nextRefreshCheck = newRefresh; + this.originEndpoint = oldState.getOriginEndpoint(); + this.refreshAttempt = oldState.getRefreshAttempt(); + } + + /** + * @return the watchKeys + */ + public List getWatchKeys() { + return watchKeys; + } + + /** + * @return the nextRefreshCheck + */ + public Instant getNextRefreshCheck() { + return nextRefreshCheck; + } + + /** + * @return the originEndpoint + */ + public String getOriginEndpoint() { + return originEndpoint; + } + + /** + * @return the refreshAttempt + */ + public Integer getRefreshAttempt() { + return refreshAttempt; + } + + /** + * Adds 1 to the number of refresh attempts + */ + public void incrementRefreshAttempt() { + this.refreshAttempt += 1; + } + + /** + * @return the refreshInterval + */ + public int getRefreshInterval() { + return refreshInterval; + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/FeatureFlags.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/FeatureFlags.java new file mode 100644 index 000000000000..dc725a309000 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/FeatureFlags.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.feature; + +import java.util.List; + +import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.data.appconfiguration.models.SettingSelector; +import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; + +public class FeatureFlags { + + private SettingSelector settingSelector; + + private List featureFlags; + + private ConfigStore configStore; + + public FeatureFlags(SettingSelector settingSelector, List featureFlags) { + this.settingSelector = settingSelector; + this.featureFlags = featureFlags; + } + + /** + * @return the configStore + */ + public ConfigStore getConfigStore() { + return configStore; + } + + /** + * @param configStore the configStore to set + */ + public void setConfigStore(ConfigStore configStore) { + this.configStore = configStore; + } + + /** + * @return the settingSelector + */ + public SettingSelector getSettingSelector() { + return settingSelector; + } + + /** + * @param settingSelector the settingSelector to set + */ + public void setSettingSelector(SettingSelector settingSelector) { + this.settingSelector = settingSelector; + } + + /** + * @return the featureFlags + */ + public List getFeatureFlags() { + return featureFlags; + } + + /** + * @param featureFlags the featureFlags to set + */ + public void setFeatureFlags(List featureFlags) { + this.featureFlags = featureFlags; + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Conditions.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Conditions.java new file mode 100644 index 000000000000..fc4d97d620ba --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Conditions.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity; + +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_REQUIREMENT_TYPE; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.azure.data.appconfiguration.models.FeatureFlagFilter; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Conditions { + @JsonProperty("client_filters") + private final Map clientFilters; + + @JsonProperty("requirement_type") + private String requirementType = DEFAULT_REQUIREMENT_TYPE; + + public Conditions(List featureFilters, String requirementType) { + clientFilters = new HashMap<>(); + for (int i = 0; i < featureFilters.size(); i++) { + clientFilters.put(i, featureFilters.get(i)); + } + this.requirementType = requirementType; + } + + /** + * @return the requirementType + */ + public String getRequirementType() { + return requirementType; + } + + /** + * @return the clientFilters + */ + public Map getClientFilters() { + return clientFilters; + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Feature.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Feature.java index 4435bb728367..56a6c6b05f84 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Feature.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/Feature.java @@ -2,15 +2,7 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_REQUIREMENT_TYPE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.REQUIREMENT_TYPE; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; -import com.azure.data.appconfiguration.models.FeatureFlagFilter; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; @@ -20,14 +12,20 @@ @JsonIgnoreProperties(ignoreUnknown = true) public final class Feature { - @JsonProperty("key") - private String key; + @JsonProperty("id") + private String id; + + @JsonProperty("description") + private String description; - @JsonProperty("enabled-for") - private Map enabledFor; + @JsonProperty("enabled") + private boolean enabled; - @JsonProperty(REQUIREMENT_TYPE) - private String requirementType = DEFAULT_REQUIREMENT_TYPE; + @JsonProperty("conditions") + private Conditions conditions; + + @JsonProperty("telemetry") + private FeatureTelemetry telemetry; /** * Feature Flag object. @@ -37,62 +35,87 @@ public Feature() { /** * Feature Flag object. - * + * * @param key Name of the Feature Flag * @param featureItem Configurations of the Feature Flag. */ - public Feature(String key, FeatureFlagConfigurationSetting featureItem, String requirementType) { - this.key = key; - List filterMapper = featureItem.getClientFilters(); + public Feature(FeatureFlagConfigurationSetting featureFlag, String requirementType, FeatureTelemetry telemetry) { + this.id = featureFlag.getFeatureId(); + this.description = featureFlag.getDescription(); + this.enabled = featureFlag.isEnabled(); + + this.conditions = new Conditions(featureFlag.getClientFilters(), requirementType); - enabledFor = new HashMap<>(); + this.setTelemetry(telemetry); + } - for (int i = 0; i < filterMapper.size(); i++) { - enabledFor.put(i, filterMapper.get(i)); - } - this.requirementType = requirementType; + /** + * @return the id + */ + public String getId() { + return id; } /** - * @return the key + * @param id the id to set */ - public String getKey() { - return key; + public void setId(String id) { + this.id = id; } /** - * @param key the key to set + * @return the description */ - public void setKey(String key) { - this.key = key; + public String getDescription() { + return description; } /** - * @return the enabledFor + * @param description the description to set */ - public Map getEnabledFor() { - return enabledFor; + public void setDescription(String description) { + this.description = description; } /** - * @param enabledFor the enabledFor to set + * @return the enabled */ - public void setEnabledFor(Map enabledFor) { - this.enabledFor = enabledFor; + public boolean isEnabled() { + return enabled; } /** - * @return the requirementType + * @param enabled the enabled to set */ - public String getRequirementType() { - return requirementType; + public void setEnabled(boolean enabled) { + this.enabled = enabled; } /** - * @param requirementType the requirementType to set + * @return the conditions */ - public void setRequirementType(String requirementType) { - this.requirementType = requirementType; + public Conditions getConditions() { + return conditions; } + /** + * @param conditions the conditions to set + */ + public void setConditions(Conditions conditions) { + this.conditions = conditions; + } + + /** + * @return the telemetry + */ + public FeatureTelemetry getTelemetry() { + return telemetry; + } + + /** + * @param telemetry the telemetry to set + */ + public void setTelemetry(FeatureTelemetry telemetry) { + this.telemetry = telemetry; + } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/FeatureFilterEvaluationContext.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/FeatureFilterEvaluationContext.java new file mode 100644 index 000000000000..760284fc57bd --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/FeatureFilterEvaluationContext.java @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity; + +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +/** + * Context passed into Feature Filters used for evaluation. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public final class FeatureFilterEvaluationContext { + + /** + * Creates an instance of {@link FeatureFilterEvaluationContext} + */ + public FeatureFilterEvaluationContext() { + } + + private String name; + + private Map parameters; + + /** + * Return the name + * @return the name + */ + public String getName() { + return name; + } + + /** + * Set the name + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * Return the parameters + * @return the parameters + */ + public Map getParameters() { + Map params = new HashMap(); + if (parameters != null) { + params.putAll(parameters); + } + return params; + } + + /** + * Set the parameters + * @param parameters the parameters to set + */ + public void setParameters(Map parameters) { + this.parameters = parameters; + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/FeatureTelemetry.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/FeatureTelemetry.java new file mode 100644 index 000000000000..b77e80f30990 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/feature/entity/FeatureTelemetry.java @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.HashMap; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class FeatureTelemetry { + @JsonProperty("enabled") + private boolean enabled = false; + + @JsonProperty("metadata") + private Map metadata = new HashMap<>(); + + /** + * @param enabled the enabled property to set + */ + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + /** + * @return the enabled + */ + public boolean isEnabled() { + return enabled; + } + + /** + * @param metadata the metadata to set + */ + public void setMetadata(Map metadata) { + this.metadata = metadata; + } + + /** + * @return the metadata + */ + public Map getMetadata() { + return metadata; + } +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationKeyValueSelector.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationKeyValueSelector.java index 8a62de3d393a..b8b9f1ad8684 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationKeyValueSelector.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationKeyValueSelector.java @@ -9,12 +9,12 @@ import java.util.List; import java.util.stream.Collectors; -import javax.annotation.PostConstruct; -import javax.validation.constraints.NotNull; - import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import jakarta.annotation.PostConstruct; +import jakarta.validation.constraints.NotNull; + /** * Properties on what Selects are checked before loading configurations. */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProperties.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProperties.java index 26e4730210aa..981f487518cc 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProperties.java @@ -8,12 +8,12 @@ import java.util.List; import java.util.Map; -import javax.annotation.PostConstruct; - import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import jakarta.annotation.PostConstruct; + /** * Properties for all Azure App Configuration stores that are loaded. */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProviderProperties.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProviderProperties.java index 58f107279b40..c0b05c03881e 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProviderProperties.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationProviderProperties.java @@ -4,12 +4,12 @@ import java.time.Instant; -import javax.annotation.PostConstruct; - import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.util.Assert; +import jakarta.annotation.PostConstruct; + /** * Properties defining connection to Azure App Configuration. */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreMonitoring.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreMonitoring.java index c3ba25188262..cfc724d7c126 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreMonitoring.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreMonitoring.java @@ -6,10 +6,10 @@ import java.util.ArrayList; import java.util.List; -import javax.annotation.PostConstruct; - import org.springframework.util.Assert; +import jakarta.annotation.PostConstruct; + /** * Properties for Monitoring an Azure App Configuration Store. */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreTrigger.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreTrigger.java index fceecb9d4cea..e57a6d984d69 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreTrigger.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationStoreTrigger.java @@ -4,11 +4,11 @@ import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.EMPTY_LABEL; -import javax.annotation.PostConstruct; -import javax.validation.constraints.NotNull; - import org.springframework.util.Assert; +import jakarta.annotation.PostConstruct; +import jakarta.validation.constraints.NotNull; + /** * Properties on what Triggers are checked before a refresh is triggered. */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/ConfigStore.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/ConfigStore.java index f5ab4828f50c..878db9e464c8 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/ConfigStore.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/ConfigStore.java @@ -8,12 +8,12 @@ import java.util.ArrayList; import java.util.List; -import javax.annotation.PostConstruct; - import org.springframework.util.StringUtils; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationReplicaClientsBuilder; +import jakarta.annotation.PostConstruct; + /** * Config Store Properties for Requests to an Azure App Configuration Store. */ @@ -42,6 +42,8 @@ public final class ConfigStore { private List trimKeyPrefix; + private boolean replicaDiscoveryEnabled = true; + /** * @return the endpoint */ @@ -183,13 +185,26 @@ public List getTrimKeyPrefix() { } /** - * @param trimKeyPrefix the values to be trimmed from key names before being set to - * `@ConfigurationProperties` + * @param trimKeyPrefix the values to be trimmed from key names before being set to `@ConfigurationProperties` */ public void setTrimKeyPrefix(List trimKeyPrefix) { this.trimKeyPrefix = trimKeyPrefix; } + /** + * @return the replicaDiscoveryEnabled + */ + public boolean isReplicaDiscoveryEnabled() { + return replicaDiscoveryEnabled; + } + + /** + * @param replicaDiscoveryEnabled the replicaDiscoveryEnabled to set + */ + public void setReplicaDiscoveryEnabled(boolean replicaDiscoveryEnabled) { + this.replicaDiscoveryEnabled = replicaDiscoveryEnabled; + } + /** * @throws IllegalStateException Connection String URL endpoint is invalid */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagKeyValueSelector.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagKeyValueSelector.java index 35d8a3062e65..358464a6802b 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagKeyValueSelector.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagKeyValueSelector.java @@ -10,11 +10,11 @@ import java.util.List; import java.util.stream.Collectors; -import javax.annotation.PostConstruct; - import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import jakarta.annotation.PostConstruct; + /** * Properties on what Selects are checked before loading configurations. */ diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagStore.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagStore.java index 2a22455eaec8..c7b5e89646f7 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagStore.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/FeatureFlagStore.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; /** * Properties for what needs to be requested from Azure App Configuration for Feature Flags. diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring.factories index bb44d26b330b..9a76c2325a3c 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring.factories +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring.factories @@ -1,6 +1,3 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.azure.spring.cloud.appconfiguration.config.AppConfigurationAutoConfiguration - org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.azure.spring.cloud.appconfiguration.config.implementation.config.AppConfigurationBootstrapConfiguration diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..1b36b907ed1b --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +com.azure.spring.cloud.appconfiguration.config.AppConfigurationAutoConfiguration +com.azure.spring.cloud.appconfiguration.config.implementation.config.AppConfigurationBootstrapConfiguration \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceSnapshotTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceSnapshotTest.java index 83bb22afad97..bd48c729a109 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceSnapshotTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceSnapshotTest.java @@ -21,6 +21,7 @@ import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createItem; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createItemFeatureFlag; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.when; import java.io.IOException; @@ -35,11 +36,11 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; -import com.azure.core.util.Configuration; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; -import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; @@ -88,6 +89,10 @@ public class AppConfigurationApplicationSettingPropertySourceSnapshotTest { @Mock private List configurationListMock; + + FeatureFlagClient featureFlagLoader = new FeatureFlagClient(); + + private MockitoSession session; @BeforeAll public static void setup() { @@ -96,6 +101,7 @@ public static void setup() { @BeforeEach public void init() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MAPPER.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE); MockitoAnnotations.openMocks(this); @@ -110,32 +116,28 @@ public void init() { TRIM.add(KEY_FILTER); propertySource = new AppConfigurationSnapshotPropertySource(TEST_STORE_NAME, clientMock, - keyVaultClientFactoryMock, SNAPSHOT_NAME); + keyVaultClientFactoryMock, SNAPSHOT_NAME, featureFlagLoader); } @AfterEach public void cleanup() throws Exception { MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); } @Test public void testPropCanBeInitAndQueried() throws IOException { - when(configurationListMock.iterator()).thenReturn(testItems.iterator()); + when(configurationListMock.iterator()).thenReturn(testItems.iterator()).thenReturn(testItems.iterator()); when(clientMock.listSettingSnapshot(Mockito.any())).thenReturn(configurationListMock) .thenReturn(configurationListMock); - when(clientMock.getTracingInfo()) - .thenReturn(new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); propertySource.initProperties(TRIM); String[] keyNames = propertySource.getPropertyNames(); String[] expectedKeyNames = testItems.stream().map(t -> { - if (t.getKey().startsWith(".appconfig.featureflag/")) { - return t.getKey().replace(".appconfig.featureflag/", "feature-management."); - } return t.getKey().replaceFirst("^" + KEY_FILTER, "").replace("/", "."); - }).toArray(String[]::new); + }).filter(key -> !key.startsWith(".appconfig")).toArray(String[]::new); assertThat(keyNames).containsExactlyInAnyOrder(expectedKeyNames); @@ -143,6 +145,7 @@ public void testPropCanBeInitAndQueried() throws IOException { assertThat(propertySource.getProperty(TEST_KEY_2)).isEqualTo(TEST_VALUE_2); assertThat(propertySource.getProperty(TEST_KEY_3)).isEqualTo(TEST_VALUE_3); assertThat(propertySource.getProperty(".bar.test_key_4")).isEqualTo("test_value_4"); + assertEquals(1, featureFlagLoader.getProperties().size()); } @Test diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceTest.java index 975d694443e2..9836dbed373d 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationApplicationSettingPropertySourceTest.java @@ -17,6 +17,7 @@ import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_VALUE_3; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createItem; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.when; import java.io.IOException; @@ -31,16 +32,21 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import org.springframework.boot.context.properties.source.InvalidConfigurationPropertyValueException; public class AppConfigurationApplicationSettingPropertySourceTest { private static final String EMPTY_CONTENT_TYPE = ""; + private static final String JSON_CONTENT_TYPE = "application/json"; + private static final AppConfigurationProperties TEST_PROPS = new AppConfigurationProperties(); private static final String KEY_FILTER = "/foo/"; @@ -57,6 +63,9 @@ public class AppConfigurationApplicationSettingPropertySourceTest { private static final ConfigurationSetting ITEM_NULL = createItem(KEY_FILTER, TEST_KEY_3, TEST_VALUE_3, TEST_LABEL_3, null); + private static final ConfigurationSetting ITEM_INVALID_JSON = createItem(KEY_FILTER, TEST_KEY_3, TEST_VALUE_3, TEST_LABEL_3, + JSON_CONTENT_TYPE); + private static final ObjectMapper MAPPER = new ObjectMapper(); private List testItems = new ArrayList<>(); @@ -71,6 +80,8 @@ public class AppConfigurationApplicationSettingPropertySourceTest { @Mock private List configurationListMock; + + private MockitoSession session; @BeforeAll public static void setup() { @@ -79,6 +90,7 @@ public static void setup() { @BeforeEach public void init() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MAPPER.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE); MockitoAnnotations.openMocks(this); @@ -97,6 +109,7 @@ public void init() { @AfterEach public void cleanup() throws Exception { MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); } @Test @@ -156,4 +169,17 @@ public void initNullValidContentTypeTest() throws IOException { assertThat(keyNames).containsExactlyInAnyOrder(expectedKeyNames); } + + @Test + public void jsonContentTypeWithInvalidJsonValueTest() { + List items = new ArrayList<>(); + items.add(ITEM_INVALID_JSON); + when(configurationListMock.iterator()).thenReturn(items.iterator()) + .thenReturn(Collections.emptyIterator()); + when(clientMock.listSettings(Mockito.any())).thenReturn(configurationListMock); + + assertThatThrownBy(() -> propertySource.initProperties(null)) + .isInstanceOf(InvalidConfigurationPropertyValueException.class) + .hasMessageNotContaining(ITEM_INVALID_JSON.getValue()); + } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySourceTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySourceTest.java index 755e5a8c0725..804ef5b7c830 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySourceTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationFeatureManagementPropertySourceTest.java @@ -2,262 +2,65 @@ // Licensed under the MIT License. package com.azure.spring.cloud.appconfiguration.config.implementation; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_ROLLOUT_PERCENTAGE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.EMPTY_LABEL; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_CONTENT_TYPE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_MANAGEMENT_KEY; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.GROUPS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.USERS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_BOOLEAN_VALUE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_LABEL; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_VALUE; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_VALUE_PARAMETERS; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_VALUE_TARGETING; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_CONN_STRING; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_STORE_NAME; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createItemFeatureFlag; -import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.when; -import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; -import com.azure.core.util.Configuration; -import com.azure.data.appconfiguration.models.ConfigurationSetting; -import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; -import com.azure.data.appconfiguration.models.FeatureFlagFilter; import com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.Feature; -import com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.FeatureSet; -import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; -import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; -import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagStore; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.PropertyNamingStrategies; public class AppConfigurationFeatureManagementPropertySourceTest { - public static final List FEATURE_ITEMS = new ArrayList<>(); - - public static final List FEATURE_ITEMS_TARGETING = new ArrayList<>(); - - private static final AppConfigurationProperties TEST_PROPS = new AppConfigurationProperties(); - - private static final String KEY_FILTER = "/foo/"; - - private static final FeatureFlagConfigurationSetting FEATURE_ITEM = createItemFeatureFlag(".appconfig.featureflag/", - "Alpha", - FEATURE_VALUE, FEATURE_LABEL, FEATURE_FLAG_CONTENT_TYPE); - - private static final FeatureFlagConfigurationSetting FEATURE_ITEM_2 = createItemFeatureFlag( - ".appconfig.featureflag/", "Beta", - FEATURE_BOOLEAN_VALUE, FEATURE_LABEL, FEATURE_FLAG_CONTENT_TYPE); - - private static final FeatureFlagConfigurationSetting FEATURE_ITEM_3 = createItemFeatureFlag( - ".appconfig.featureflag/", "Gamma", - FEATURE_VALUE_PARAMETERS, FEATURE_LABEL, FEATURE_FLAG_CONTENT_TYPE); - - private static final FeatureFlagConfigurationSetting FEATURE_ITEM_NULL = createItemFeatureFlag( - ".appconfig.featureflag/", "Alpha", - FEATURE_VALUE, - FEATURE_LABEL, null); - - private static final FeatureFlagConfigurationSetting FEATURE_ITEM_TARGETING = createItemFeatureFlag( - ".appconfig.featureflag/", "target", - FEATURE_VALUE_TARGETING, FEATURE_LABEL, FEATURE_FLAG_CONTENT_TYPE); - - private static final ObjectMapper MAPPER = new ObjectMapper(); - - private AppConfigurationFeatureManagementPropertySource propertySource; - - @Mock - private AppConfigurationReplicaClient clientMock; - - private FeatureFlagStore featureFlagStore; - @Mock - private List featureListMock; - - @BeforeAll - public static void setup() { - TestUtils.addStore(TEST_PROPS, TEST_STORE_NAME, TEST_CONN_STRING, KEY_FILTER); - - FEATURE_ITEM.setContentType(FEATURE_FLAG_CONTENT_TYPE); - FEATURE_ITEMS.add(FEATURE_ITEM); - FEATURE_ITEMS.add(FEATURE_ITEM_2); - FEATURE_ITEMS.add(FEATURE_ITEM_3); - - FEATURE_ITEMS_TARGETING.add(FEATURE_ITEM_TARGETING); - } + private FeatureFlagClient featureFlagLoaderMock; + + private static final String FEATURE_FLAG_KEY = "feature_management.feature_flags"; + + private MockitoSession session; @BeforeEach public void init() { - MAPPER.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE); - + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); - - featureFlagStore = new FeatureFlagStore(); - - String[] labelFilter = { EMPTY_LABEL }; - - propertySource = new AppConfigurationFeatureManagementPropertySource(TEST_STORE_NAME, clientMock, "", - labelFilter); } - + @AfterEach public void cleanup() throws Exception { MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); } @Test - public void overrideTest() { - String[] labels = {"test"}; - AppConfigurationFeatureManagementPropertySource propertySourceOverride = new AppConfigurationFeatureManagementPropertySource(TEST_STORE_NAME, clientMock, "/test/", - labels); - when(featureListMock.iterator()).thenReturn(FEATURE_ITEMS.iterator()); - when(clientMock.listSettings(Mockito.any())) - .thenReturn(featureListMock).thenReturn(featureListMock); - when(clientMock.getTracingInfo()).thenReturn(new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - featureFlagStore.setEnabled(true); - - propertySourceOverride.initProperties(null); - - Map filters = new HashMap<>(); - FeatureFlagFilter ffec = new FeatureFlagFilter("TestFilter"); - filters.put(0, ffec); - Feature gamma = new Feature(); - gamma.setKey("Gamma"); - filters = new HashMap<>(); - ffec = new FeatureFlagFilter("TestFilter"); - Map parameters = new LinkedHashMap<>(); - parameters.put("key", "value"); - ffec.setParameters(parameters); - filters.put(0, ffec); - gamma.setEnabledFor(filters); - - assertEquals(gamma.getKey(), - ((Feature) propertySourceOverride.getProperty(FEATURE_MANAGEMENT_KEY + "Gamma")).getKey()); + public void getPropertyNamesTest() { + AppConfigurationFeatureManagementPropertySource featureManagementPropertySource = new AppConfigurationFeatureManagementPropertySource( + featureFlagLoaderMock); + + String[] names = featureManagementPropertySource.getPropertyNames(); + assertTrue(names.length == 1); + assertEquals(FEATURE_FLAG_KEY, names[0]); } @Test - public void testFeatureFlagCanBeInitedAndQueried() { - when(featureListMock.iterator()).thenReturn(FEATURE_ITEMS.iterator()); - when(clientMock.listSettings(Mockito.any())) - .thenReturn(featureListMock).thenReturn(featureListMock); - when(clientMock.getTracingInfo()).thenReturn(new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - featureFlagStore.setEnabled(true); - - propertySource.initProperties(null); - - HashMap filters = new HashMap<>(); - FeatureFlagFilter ffec = new FeatureFlagFilter("TestFilter"); - filters.put(0, ffec); - Feature gamma = new Feature(); - gamma.setKey("Gamma"); - filters = new HashMap<>(); - ffec = new FeatureFlagFilter("TestFilter"); - LinkedHashMap parameters = new LinkedHashMap<>(); - parameters.put("key", "value"); - ffec.setParameters(parameters); - filters.put(0, ffec); - gamma.setEnabledFor(filters); - - assertEquals(gamma.getKey(), - ((Feature) propertySource.getProperty(FEATURE_MANAGEMENT_KEY + "Gamma")).getKey()); - } - - @Test - public void testFeatureFlagThrowError() { - when(featureListMock.iterator()).thenReturn(FEATURE_ITEMS.iterator()); - when(clientMock.listSettings(Mockito.any())).thenReturn(featureListMock); - when(clientMock.getTracingInfo()).thenReturn(new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - try { - propertySource.initProperties(null); - } catch (Exception e) { - assertEquals("Found Feature Flag /foo/test_key_1 with invalid Content Type of ", e.getMessage()); - } + public void getPropertyTest() { + AppConfigurationFeatureManagementPropertySource featureManagementPropertySource = new AppConfigurationFeatureManagementPropertySource( + featureFlagLoaderMock); + + assertNull(featureManagementPropertySource.getProperty("NotFeatureFlagProperty")); + when(featureFlagLoaderMock.getProperties()).thenReturn(new HashMap()); + assertNotNull(featureManagementPropertySource.getProperty(FEATURE_FLAG_KEY)); + } - @Test - public void initNullInvalidContentTypeFeatureFlagTest() { - ArrayList items = new ArrayList<>(); - items.add(FEATURE_ITEM_NULL); - when(featureListMock.iterator()).thenReturn(Collections.emptyIterator()) - .thenReturn(items.iterator()); - when(clientMock.listSettings(Mockito.any())) - .thenReturn(featureListMock).thenReturn(featureListMock); - - propertySource.initProperties(null); - - String[] keyNames = propertySource.getPropertyNames(); - String[] expectedKeyNames = {}; - - assertThat(keyNames).containsExactlyInAnyOrder(expectedKeyNames); - } - - @Test - public void testFeatureFlagTargeting() { - when(featureListMock.iterator()).thenReturn(FEATURE_ITEMS_TARGETING.iterator()); - when(clientMock.listSettings(Mockito.any())) - .thenReturn(featureListMock).thenReturn(featureListMock); - when(clientMock.getTracingInfo()).thenReturn(new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - featureFlagStore.setEnabled(true); - - propertySource.initProperties(null); - - FeatureSet featureSetExpected = new FeatureSet(); - Feature feature = new Feature(); - feature.setKey("target"); - HashMap filters = new HashMap<>(); - FeatureFlagFilter ffec = new FeatureFlagFilter("targetingFilter"); - - LinkedHashMap parameters = new LinkedHashMap<>(); - - LinkedHashMap users = new LinkedHashMap<>(); - users.put("0", "Jeff"); - users.put("1", "Alicia"); - - LinkedHashMap groups = new LinkedHashMap<>(); - LinkedHashMap ring0 = new LinkedHashMap<>(); - LinkedHashMap ring1 = new LinkedHashMap<>(); - - ring0.put("name", "Ring0"); - ring0.put("rolloutPercentage", "100"); - - ring1.put("name", "Ring1"); - ring1.put("rolloutPercentage", "100"); - - groups.put("0", ring0); - groups.put("1", ring1); - - parameters.put(USERS, users); - parameters.put(GROUPS, groups); - parameters.put(DEFAULT_ROLLOUT_PERCENTAGE, 50); - - ffec.setParameters(parameters); - filters.put(0, ffec); - feature.setEnabledFor(filters); - - featureSetExpected.addFeature("target", feature); - Feature targeting = (Feature) propertySource.getProperty(FEATURE_MANAGEMENT_KEY + "target"); - - FeatureFlagFilter filter = targeting.getEnabledFor().get(0); - - assertNotNull(filter); - assertEquals("targetingFilter", filter.getName()); - assertEquals(parameters.size(), filter.getParameters().size()); - } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceKeyVaultTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceKeyVaultTest.java index f37d941a7850..8ed112b31f8e 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceKeyVaultTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceKeyVaultTest.java @@ -4,28 +4,19 @@ import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.KEY_VAULT_CONTENT_TYPE; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_CONN_STRING; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_KEY_1; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_KEY_2; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_KEY_3; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_KEY_VAULT_1; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_LABEL_1; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_LABEL_2; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_LABEL_3; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_LABEL_VAULT_1; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_STORE_NAME; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_URI_VAULT_1; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_VALUE_1; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_VALUE_2; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_VALUE_3; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createItem; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_URI_VAULT_2; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createSecretReference; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.when; -import java.io.IOException; import java.net.URI; -import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -35,6 +26,9 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; +import org.springframework.boot.context.properties.source.InvalidConfigurationPropertyValueException; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.SecretReferenceConfigurationSetting; @@ -46,26 +40,16 @@ public class AppConfigurationPropertySourceKeyVaultTest { - public static final List TEST_ITEMS = new ArrayList<>(); - - private static final String EMPTY_CONTENT_TYPE = ""; - private static final AppConfigurationProperties TEST_PROPS = new AppConfigurationProperties(); private static final String KEY_FILTER = "/foo/"; - private static final ConfigurationSetting ITEM_1 = createItem(KEY_FILTER, TEST_KEY_1, TEST_VALUE_1, TEST_LABEL_1, - EMPTY_CONTENT_TYPE); - - private static final ConfigurationSetting ITEM_2 = createItem(KEY_FILTER, TEST_KEY_2, TEST_VALUE_2, TEST_LABEL_2, - EMPTY_CONTENT_TYPE); - - private static final ConfigurationSetting ITEM_3 = createItem(KEY_FILTER, TEST_KEY_3, TEST_VALUE_3, TEST_LABEL_3, - EMPTY_CONTENT_TYPE); - private static final SecretReferenceConfigurationSetting KEY_VAULT_ITEM = createSecretReference(KEY_FILTER, - TEST_KEY_VAULT_1, - TEST_URI_VAULT_1, TEST_LABEL_VAULT_1, KEY_VAULT_CONTENT_TYPE); + TEST_KEY_VAULT_1, TEST_URI_VAULT_1, TEST_LABEL_VAULT_1, KEY_VAULT_CONTENT_TYPE); + + private static final SecretReferenceConfigurationSetting KEY_VAULT_ITEM_INVALID_URI = createSecretReference( + KEY_FILTER, + TEST_KEY_VAULT_1, TEST_URI_VAULT_2, TEST_LABEL_VAULT_1, KEY_VAULT_CONTENT_TYPE); private AppConfigurationApplicationSettingPropertySource propertySource; @@ -73,7 +57,7 @@ public class AppConfigurationPropertySourceKeyVaultTest { private SecretClientBuilder builderMock; @Mock - private AppConfigurationKeyVaultClientFactory keyVaultClientFactory; + private AppConfigurationKeyVaultClientFactory keyVaultClientFactoryMock; @Mock private AppConfigurationSecretClientManager clientManagerMock; @@ -87,8 +71,11 @@ public class AppConfigurationPropertySourceKeyVaultTest { @Mock private List keyVaultSecretListMock; + private MockitoSession session; + @BeforeEach public void init() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); TestUtils.addStore(TEST_PROPS, TEST_STORE_NAME, TEST_CONN_STRING, KEY_FILTER); KEY_VAULT_ITEM.setContentType(KEY_VAULT_CONTENT_TYPE); @@ -97,47 +84,67 @@ public void init() { String[] labelFilter = { "\0" }; propertySource = new AppConfigurationApplicationSettingPropertySource(TEST_STORE_NAME, replicaClientMock, - keyVaultClientFactory, KEY_FILTER, labelFilter); - - TEST_ITEMS.add(ITEM_1); - TEST_ITEMS.add(ITEM_2); - TEST_ITEMS.add(ITEM_3); + keyVaultClientFactoryMock, KEY_FILTER, labelFilter); } @AfterEach public void cleanup() throws Exception { MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); } @Test public void testKeyVaultTest() { - TEST_ITEMS.add(KEY_VAULT_ITEM); - when(keyVaultSecretListMock.iterator()).thenReturn(TEST_ITEMS.iterator()) + List settings = List.of(KEY_VAULT_ITEM); + when(keyVaultSecretListMock.iterator()).thenReturn(settings.iterator()) .thenReturn(Collections.emptyIterator()); when(replicaClientMock.listSettings(Mockito.any())).thenReturn(keyVaultSecretListMock) .thenReturn(keyVaultSecretListMock); - Mockito.when(builderMock.buildAsyncClient()).thenReturn(clientMock); - KeyVaultSecret secret = new KeyVaultSecret("mySecret", "mySecretValue"); - when(keyVaultClientFactory.getClient(Mockito.eq("https://test.key.vault.com"))).thenReturn(clientManagerMock); + when(keyVaultClientFactoryMock.getClient(Mockito.eq("https://test.key.vault.com"))).thenReturn(clientManagerMock); when(clientManagerMock.getSecret(Mockito.any(URI.class))).thenReturn(secret); try { propertySource.initProperties(null); - } catch (IOException e) { + } catch (InvalidConfigurationPropertyValueException e) { fail("Failed Reading in Feature Flags"); } String[] keyNames = propertySource.getPropertyNames(); - String[] expectedKeyNames = TEST_ITEMS.stream() + String[] expectedKeyNames = settings.stream() .map(t -> t.getKey().substring(KEY_FILTER.length())).toArray(String[]::new); assertThat(keyNames).containsExactlyInAnyOrder(expectedKeyNames); - - assertThat(propertySource.getProperty(TEST_KEY_1)).isEqualTo(TEST_VALUE_1); - assertThat(propertySource.getProperty(TEST_KEY_2)).isEqualTo(TEST_VALUE_2); - assertThat(propertySource.getProperty(TEST_KEY_3)).isEqualTo(TEST_VALUE_3); assertThat(propertySource.getProperty(TEST_KEY_VAULT_1)).isEqualTo("mySecretValue"); } + + @Test + public void invalidKeyVaultReferenceInvalidURITest() { + List settings = List.of(KEY_VAULT_ITEM_INVALID_URI); + when(keyVaultSecretListMock.iterator()).thenReturn(settings.iterator()) + .thenReturn(Collections.emptyIterator()); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(keyVaultSecretListMock) + .thenReturn(keyVaultSecretListMock); + + InvalidConfigurationPropertyValueException exception = assertThrows( + InvalidConfigurationPropertyValueException.class, () -> propertySource.initProperties(null)); + assertEquals("test_key_vault_1", exception.getName()); + assertEquals("", exception.getValue()); + assertEquals("Invalid URI found in JSON property field 'uri' unable to parse.", exception.getReason()); + } + + @Test + public void invalidKeyVaultReferenceParseErrorTest() { + List settings = List.of(KEY_VAULT_ITEM); + when(keyVaultSecretListMock.iterator()).thenReturn(settings.iterator()) + .thenReturn(Collections.emptyIterator()); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(keyVaultSecretListMock) + .thenReturn(keyVaultSecretListMock); + when(keyVaultClientFactoryMock.getClient(Mockito.eq("https://test.key.vault.com"))).thenReturn(clientManagerMock); + when(clientManagerMock.getSecret(Mockito.any())).thenThrow(new RuntimeException("Parse Failed")); + + RuntimeException exception = assertThrows(RuntimeException.class, () -> propertySource.initProperties(null)); + assertEquals("Parse Failed", exception.getMessage()); + } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocatorTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocatorTest.java index e5860131de86..09b9c7b36caf 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocatorTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPropertySourceLocatorTest.java @@ -6,7 +6,6 @@ import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_CONN_STRING; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_CONN_STRING_2; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_STORE_NAME; -import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_STORE_NAME_1; import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_STORE_NAME_2; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -21,13 +20,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; import java.util.List; +import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; @@ -35,18 +32,16 @@ import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; -import com.azure.core.http.rest.PagedFlux; -import com.azure.core.http.rest.PagedResponse; -import com.azure.data.appconfiguration.ConfigurationAsyncClient; -import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.Feature; -import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationKeyValueSelector; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProviderProperties; @@ -55,8 +50,6 @@ import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagStore; -import reactor.core.publisher.Flux; - @TestMethodOrder(MethodOrderer.MethodName.class) public class AppConfigurationPropertySourceLocatorTest { @@ -88,50 +81,38 @@ public class AppConfigurationPropertySourceLocatorTest { private FeatureFlagStore featureFlagStoreMock; @Mock - private ConfigurationAsyncClient configClientMock; - - @Mock - private PagedFlux settingsMock; - - @Mock - private Iterable> iterableMock; + private ConfigStore configStoreMockError; @Mock - private Iterator> iteratorMock; + private AppConfigurationProviderProperties appPropertiesMock; @Mock - private Flux> pageMock; + private ReplicaLookUp replicaLookUpMock; @Mock - private PagedResponse pagedMock; + private FeatureFlagClient featureFlagClientMock; @Mock private ConfigStore configStoreMock; - @Mock - private ConfigStore configStoreMockError; - - @Mock - private AppConfigurationProviderProperties appPropertiesMock; + private AppConfigurationPropertySourceLocator locator; private AppConfigurationProperties properties; - @Mock - private List watchKeyListMock; - - private AppConfigurationPropertySourceLocator locator; - private AppConfigurationProviderProperties appProperties; private List stores; + private AppConfigurationStoreMonitoring monitoring; + + private MutablePropertySources sources = new MutablePropertySources(); + + private MockitoSession session; + @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); - when(emptyEnvironment.getActiveProfiles()).thenReturn(new String[] {}); - when(devEnvironment.getActiveProfiles()).thenReturn(new String[] { PROFILE_NAME_1 }); - when(multiEnvironment.getActiveProfiles()).thenReturn(new String[] { PROFILE_NAME_1, PROFILE_NAME_2 }); - MutablePropertySources sources = new MutablePropertySources(); sources.addFirst(new PropertySource("refreshArgs") { @@ -141,44 +122,18 @@ public Object getProperty(String name) { } }); - when(emptyEnvironment.getPropertySources()).thenReturn(sources); - when(devEnvironment.getPropertySources()).thenReturn(sources); - when(multiEnvironment.getPropertySources()).thenReturn(sources); - properties = new AppConfigurationProperties(); properties.setEnabled(true); properties.setRefreshInterval(null); - when(configStoreMock.getConnectionString()).thenReturn(TEST_CONN_STRING); - when(configStoreMock.getEndpoint()).thenReturn(TEST_STORE_NAME); - when(configStoreMock.isEnabled()).thenReturn(true); - - stores = new ArrayList<>(); - stores.add(configStoreMock); + TestUtils.addStore(properties, TEST_STORE_NAME, TEST_CONN_STRING, KEY_FILTER); - AppConfigurationStoreMonitoring monitoring = new AppConfigurationStoreMonitoring(); + monitoring = new AppConfigurationStoreMonitoring(); monitoring.setEnabled(false); AppConfigurationStoreTrigger trigger = new AppConfigurationStoreTrigger(); - trigger.setKey("sentinel"); trigger.setKey("test"); - ArrayList triggers = new ArrayList<>(); - triggers.add(trigger); - monitoring.setTriggers(triggers); - when(configStoreMock.getMonitoring()).thenReturn(monitoring); - - when(configClientMock.listConfigurationSettings(Mockito.any())).thenReturn(settingsMock); - when(iterableMock.iterator()).thenReturn(iteratorMock); - when(iteratorMock.hasNext()).thenReturn(true).thenReturn(false); - when(iteratorMock.next()).thenReturn(pagedMock); - - when(watchKeyListMock.iterator()).thenReturn(Collections.emptyIterator()); - - when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))) - .thenReturn(Arrays.asList(replicaClientMock)); - when(replicaClientMock.listSettings(Mockito.any())).thenReturn(watchKeyListMock) - .thenReturn(watchKeyListMock).thenReturn(watchKeyListMock); - when(replicaClientMock.getEndpoint()).thenReturn(TEST_STORE_NAME); + monitoring.setTriggers(List.of(trigger)); appProperties = new AppConfigurationProviderProperties(); appProperties.setVersion("1.0"); @@ -187,24 +142,25 @@ public Object getProperty(String name) { appProperties.setDefaultMaxBackoff((long) 600); appProperties.setDefaultMinBackoff((long) 30); - AppConfigurationKeyValueSelector selectedKeys = new AppConfigurationKeyValueSelector().setKeyFilter(KEY_FILTER); - List selects = new ArrayList<>(); - selects.add(selectedKeys); - when(configStoreMock.getSelects()).thenReturn(selects); + properties.getStores().get(0).setFeatureFlags(featureFlagStoreMock); + properties.getStores().get(0).setMonitoring(monitoring); + stores = properties.getStores(); } @AfterEach public void cleanup() throws Exception { MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); AppConfigurationPropertySourceLocator.STARTUP.set(true); } @Test public void compositeSourceIsCreated() { - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, - keyVaultClientFactory, null, stores); + keyVaultClientFactory, null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -224,25 +180,25 @@ public void compositeSourceIsCreated() { @Test public void compositeSourceIsCreatedWithMonitoring() { + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); + String watchKey = "wk1"; - String watchValue = "0"; - String watchLabel = EMPTY_LABEL; AppConfigurationStoreMonitoring monitoring = new AppConfigurationStoreMonitoring(); monitoring.setEnabled(true); - List watchKeys = new ArrayList<>(); + AppConfigurationStoreTrigger trigger = new AppConfigurationStoreTrigger(); trigger.setKey(watchKey); - trigger.setLabel(watchLabel); - watchKeys.add(trigger); - monitoring.setTriggers(watchKeys); + trigger.setLabel(EMPTY_LABEL); + monitoring.setTriggers(List.of(trigger)); + + properties.getStores().get(0).setMonitoring(monitoring); - when(configStoreMock.getMonitoring()).thenReturn(monitoring); - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); when(replicaClientMock.getWatchKey(Mockito.eq(watchKey), Mockito.anyString())) - .thenReturn(TestUtils.createItem("", watchKey, watchValue, watchLabel, "")); + .thenReturn(TestUtils.createItem("", watchKey, "0", EMPTY_LABEL, "")); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -262,25 +218,27 @@ public void compositeSourceIsCreatedWithMonitoring() { } @Test - public void compositeSourceIsCreatedWithMonitoringNoWatchKey() { + public void compositeSourceIsCreatedWithMonitoringWatchKeyDoesNotExist() { + // The listed Watch Key doesn't have a value in app config. When one is added will cause a refresh. + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); + String watchKey = "wk1"; - String watchLabel = EMPTY_LABEL; AppConfigurationStoreMonitoring monitoring = new AppConfigurationStoreMonitoring(); monitoring.setEnabled(true); - List watchKeys = new ArrayList<>(); + AppConfigurationStoreTrigger trigger = new AppConfigurationStoreTrigger(); trigger.setKey(watchKey); - trigger.setLabel(watchLabel); - watchKeys.add(trigger); - monitoring.setTriggers(watchKeys); + trigger.setLabel(EMPTY_LABEL); + monitoring.setTriggers(List.of(trigger)); + + properties.getStores().get(0).setMonitoring(monitoring); - when(configStoreMock.getMonitoring()).thenReturn(monitoring); - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); when(replicaClientMock.getWatchKey(Mockito.eq(watchKey), Mockito.anyString())) .thenReturn(null); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -301,10 +259,14 @@ public void compositeSourceIsCreatedWithMonitoringNoWatchKey() { @Test public void devSourceIsCreated() { - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); + when(devEnvironment.getActiveProfiles()).thenReturn(new String[] { PROFILE_NAME_1 }); + when(devEnvironment.getPropertySources()).thenReturn(sources); + when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))).thenReturn(Arrays.asList(replicaClientMock)); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(List.of()); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -323,10 +285,14 @@ public void devSourceIsCreated() { @Test public void multiSourceIsCreated() { - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); + when(multiEnvironment.getActiveProfiles()).thenReturn(new String[] { PROFILE_NAME_1, PROFILE_NAME_2 }); + when(multiEnvironment.getPropertySources()).thenReturn(sources); + when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))).thenReturn(Arrays.asList(replicaClientMock)); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(List.of()); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -345,57 +311,22 @@ public void multiSourceIsCreated() { @Test public void storeCreatedWithFeatureFlags() { + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of("fake_features", new Feature())); + FeatureFlagStore featureFlagStore = new FeatureFlagStore(); featureFlagStore.setEnabled(true); featureFlagStore.validateAndInit(); - List featureList = new ArrayList<>(); FeatureFlagConfigurationSetting featureFlag = new FeatureFlagConfigurationSetting("Alpha", false); featureFlag.setValue(""); - featureList.add(featureFlag); - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStore); - when(replicaClientMock.listSettings(Mockito.any())).thenReturn(featureList); + properties.getStores().get(0).setFeatureFlags(featureFlagStore); - locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); - - try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); - PropertySource source = locator.locate(emptyEnvironment); - assertTrue(source instanceof CompositePropertySource); - - Collection> sources = ((CompositePropertySource) source).getPropertySources(); - // Application name: foo and active profile: dev,prod, should construct below - // composite Property Source: - // [/foo_prod/, /foo_dev/, /foo/, /application_prod/, /application_dev/, - // /application/] - String[] expectedSourceNames = new String[] { - "FM_store1/", - KEY_FILTER + "store1/\0" - }; - assertEquals(expectedSourceNames.length, sources.size()); - assertArrayEquals((Object[]) expectedSourceNames, sources.stream().map(PropertySource::getName).toArray()); - } - } - - @Test - public void storeCreatedWithFeatureFlagsRequireAll() { - FeatureFlagStore featureFlagStore = new FeatureFlagStore(); - featureFlagStore.setEnabled(true); - featureFlagStore.validateAndInit(); - - List featureList = new ArrayList<>(); - FeatureFlagConfigurationSetting featureFlag = new FeatureFlagConfigurationSetting("Alpha", true); - featureFlag.setValue("{\"id\":null,\"description\":null,\"display_name\":null,\"enabled\":true,\"conditions\":{\"requirement_type\":\"All\", \"client_filters\":[{\"name\":\"AlwaysOn\",\"parameters\":{}}]}}"); - featureList.add(featureFlag); - - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStore); - when(replicaClientMock.listSettings(Mockito.any())).thenReturn(featureList); - when(replicaClientMock.getTracingInfo()).thenReturn(new TracingInfo(false, false, 0, null)); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(List.of(featureFlag)); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -403,42 +334,36 @@ public void storeCreatedWithFeatureFlagsRequireAll() { assertTrue(source instanceof CompositePropertySource); Collection> sources = ((CompositePropertySource) source).getPropertySources(); - // Application name: foo and active profile: dev,prod, should construct below - // composite Property Source: - // [/foo_prod/, /foo_dev/, /foo/, /application_prod/, /application_dev/, - // /application/] String[] expectedSourceNames = new String[] { - "FM_store1/", - KEY_FILTER + "store1/\0" + KEY_FILTER + "store1/\0", + "feature_management" }; assertEquals(expectedSourceNames.length, sources.size()); - Object[] propertySources = sources.stream().map(c -> c.getProperty("feature-management.Alpha")).toArray(); - Feature alpha = (Feature) propertySources[0]; - assertEquals("All", alpha.getRequirementType()); assertArrayEquals((Object[]) expectedSourceNames, sources.stream().map(PropertySource::getName).toArray()); - } } @Test public void storeCreatedWithFeatureFlagsWithMonitoring() { + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of("fake_features", new Feature())); + AppConfigurationStoreMonitoring monitoring = new AppConfigurationStoreMonitoring(); monitoring.setEnabled(true); FeatureFlagStore featureFlagStore = new FeatureFlagStore(); featureFlagStore.setEnabled(true); featureFlagStore.validateAndInit(); - List featureList = new ArrayList<>(); FeatureFlagConfigurationSetting featureFlag = new FeatureFlagConfigurationSetting("Alpha", false); featureFlag.setValue(""); - featureList.add(featureFlag); - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStore); - when(configStoreMock.getMonitoring()).thenReturn(monitoring); - when(replicaClientMock.listSettings(Mockito.any())).thenReturn(featureList); + properties.getStores().get(0).setFeatureFlags(featureFlagStore); + properties.getStores().get(0).setMonitoring(monitoring); + + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(List.of(featureFlag)); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -446,13 +371,9 @@ public void storeCreatedWithFeatureFlagsWithMonitoring() { assertTrue(source instanceof CompositePropertySource); Collection> sources = ((CompositePropertySource) source).getPropertySources(); - // Application name: foo and active profile: dev,prod, should construct below - // composite Property Source: - // [/foo_prod/, /foo_dev/, /foo/, /application_prod/, /application_dev/, - // /application/] String[] expectedSourceNames = new String[] { - "FM_store1/", - KEY_FILTER + "store1/\0" + KEY_FILTER + "store1/\0", + "feature_management" }; assertEquals(expectedSourceNames.length, sources.size()); assertArrayEquals((Object[]) expectedSourceNames, sources.stream().map(PropertySource::getName).toArray()); @@ -461,10 +382,11 @@ public void storeCreatedWithFeatureFlagsWithMonitoring() { @Test public void watchedKeyCheck() { - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -472,10 +394,6 @@ public void watchedKeyCheck() { assertTrue(source instanceof CompositePropertySource); Collection> sources = ((CompositePropertySource) source).getPropertySources(); - // Application name: foo and active profile: dev,prod, should construct below - // composite Property Source: - // [/foo_prod/, /foo_dev/, /foo/, /application_prod/, /application_dev/, - // /application/] String[] expectedSourceNames = new String[] { KEY_FILTER + "store1/\0" }; @@ -486,21 +404,25 @@ public void watchedKeyCheck() { @Test public void defaultFailFastThrowException() { + when(emptyEnvironment.getActiveProfiles()).thenReturn(new String[] {}); + when(emptyEnvironment.getPropertySources()).thenReturn(sources); + when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))).thenReturn(Arrays.asList(replicaClientMock)); + when(configStoreMock.getEndpoint()).thenReturn(TEST_STORE_NAME); + when(configStoreMock.isEnabled()).thenReturn(true); + when(configStoreMock.getSelects()).thenReturn(List.of()); + when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); + when(configStoreMock.isFailFast()).thenReturn(true); + AppConfigurationStoreTrigger trigger = new AppConfigurationStoreTrigger(); - List triggers = new ArrayList<>(); - triggers.add(trigger); AppConfigurationStoreMonitoring monitor = new AppConfigurationStoreMonitoring(); monitor.setEnabled(true); - monitor.setTriggers(triggers); + monitor.setTriggers(List.of(trigger)); - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); - when(configStoreMock.isFailFast()).thenReturn(true); when(configStoreMock.getMonitoring()).thenReturn(monitor); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, List.of(configStoreMock), replicaLookUpMock, featureFlagClientMock); - when(clientFactoryMock.getAvailableClients(Mockito.anyString())).thenReturn(Arrays.asList(replicaClientMock)); when(replicaClientMock.getWatchKey(Mockito.any(), Mockito.anyString())).thenThrow(new RuntimeException()); RuntimeException e = assertThrows(RuntimeException.class, () -> locator.locate(emptyEnvironment)); assertEquals("Failed to generate property sources for " + TEST_STORE_NAME, e.getMessage()); @@ -509,15 +431,13 @@ public void defaultFailFastThrowException() { @Test public void refreshThrowException() throws IllegalArgumentException { - when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); + setupEmptyEnvironment(); + when(replicaClientMock.listSettings(any())).thenThrow(new RuntimeException()); + AppConfigurationPropertySourceLocator.STARTUP.set(false); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); - - when(clientFactoryMock.getAvailableClients(Mockito.anyString())).thenReturn(Arrays.asList(replicaClientMock)); - when(replicaClientMock.getWatchKey(Mockito.any(), Mockito.anyString())).thenThrow(new RuntimeException()); - when(replicaClientMock.listSettings(any())).thenThrow(new RuntimeException()); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.getLoadState(Mockito.anyString())).thenReturn(true); @@ -527,14 +447,21 @@ public void refreshThrowException() throws IllegalArgumentException { } @Test - @Disabled public void notFailFastShouldPass() { + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); + when(emptyEnvironment.getActiveProfiles()).thenReturn(new String[] {}); + when(emptyEnvironment.getPropertySources()).thenReturn(sources); + when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))).thenReturn(Arrays.asList(replicaClientMock)); + when(configStoreMock.getEndpoint()).thenReturn(TEST_STORE_NAME); + when(configStoreMock.isEnabled()).thenReturn(true); + when(configStoreMock.getSelects()).thenReturn(List.of()); + when(configStoreMock.getFeatureFlags()).thenReturn(featureFlagStoreMock); when(configStoreMock.isFailFast()).thenReturn(false); + locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, List.of(configStoreMock), replicaLookUpMock, featureFlagClientMock); - when(configStoreMock.isFailFast()).thenReturn(false); - when(configStoreMock.getEndpoint()).thenReturn(TEST_STORE_NAME); + properties.getStores().get(0).setFailFast(false); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -542,20 +469,19 @@ public void notFailFastShouldPass() { assertTrue(source instanceof CompositePropertySource); // Once a store fails it should stop attempting to load - verify(configStoreMock, times(2)).isFailFast(); + verify(configStoreMock, times(3)).isFailFast(); } } @Test public void multiplePropertySourcesExistForMultiStores() { - when(configStoreMock.getEndpoint()).thenReturn(TEST_STORE_NAME); - - properties = new AppConfigurationProperties(); - TestUtils.addStore(properties, TEST_STORE_NAME_1, TEST_CONN_STRING, KEY_FILTER); + setupEmptyEnvironment(); + when(featureFlagClientMock.getProperties()).thenReturn(Map.of()); TestUtils.addStore(properties, TEST_STORE_NAME_2, TEST_CONN_STRING_2, KEY_FILTER); locator = new AppConfigurationPropertySourceLocator(appProperties, - clientFactoryMock, keyVaultClientFactory, null, properties.getStores()); + clientFactoryMock, keyVaultClientFactory, null, properties.getStores(), replicaLookUpMock, + featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); @@ -564,7 +490,7 @@ public void multiplePropertySourcesExistForMultiStores() { Collection> sources = ((CompositePropertySource) source).getPropertySources(); String[] expectedSourceNames = new String[] { KEY_FILTER + TEST_STORE_NAME_2 + "/\0", - KEY_FILTER + TEST_STORE_NAME_1 + "/\0" }; + KEY_FILTER + TEST_STORE_NAME + "/\0" }; assertEquals(2, sources.size()); assertArrayEquals((Object[]) expectedSourceNames, sources.stream().map(PropertySource::getName).toArray()); } @@ -572,9 +498,8 @@ public void multiplePropertySourcesExistForMultiStores() { @Test public void awaitOnError() { - List configStores = new ArrayList<>(); - configStores.add(configStoreMockError); - + when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))).thenReturn(Arrays.asList(replicaClientMock)); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(List.of()); when(appPropertiesMock.getPrekillTime()).thenReturn(5); ConfigurableEnvironment env = Mockito.mock(ConfigurableEnvironment.class); @@ -601,15 +526,12 @@ public Object getProperty(String name) { when(configStoreMockError.isFailFast()).thenReturn(true); when(configStoreMockError.getEndpoint()).thenReturn(""); - when(configStoreMockError.getFeatureFlags()).thenReturn(featureFlagStoreMock); - - when(clientFactoryMock.getAvailableClients(Mockito.anyString())).thenReturn(Arrays.asList(replicaClientMock)); when(replicaClientMock.listSettings(Mockito.any())).thenThrow(new NullPointerException("")); when(appPropertiesMock.getPrekillTime()).thenReturn(-60); when(appPropertiesMock.getStartDate()).thenReturn(Instant.now()); locator = new AppConfigurationPropertySourceLocator(appPropertiesMock, clientFactoryMock, keyVaultClientFactory, - null, configStores); + null, List.of(configStoreMockError), replicaLookUpMock, featureFlagClientMock); assertThrows(RuntimeException.class, () -> locator.locate(env)); verify(appPropertiesMock, times(1)).getPrekillTime(); @@ -617,10 +539,13 @@ public Object getProperty(String name) { @Test public void storeDisabled() { - when(configStoreMock.isEnabled()).thenReturn(false); + when(emptyEnvironment.getActiveProfiles()).thenReturn(new String[] {}); + when(emptyEnvironment.getPropertySources()).thenReturn(sources); + properties.getStores().get(0).setEnabled(false); + properties.getStores().get(0).setMonitoring(monitoring); locator = new AppConfigurationPropertySourceLocator(appProperties, clientFactoryMock, keyVaultClientFactory, - null, stores); + null, stores, replicaLookUpMock, featureFlagClientMock); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.updateState(Mockito.any())).thenReturn(null); PropertySource source = locator.locate(emptyEnvironment); @@ -631,4 +556,11 @@ public void storeDisabled() { assertEquals(0, sources.size()); } } + + private void setupEmptyEnvironment() { + when(emptyEnvironment.getActiveProfiles()).thenReturn(new String[] {}); + when(emptyEnvironment.getPropertySources()).thenReturn(sources); + when(clientFactoryMock.getAvailableClients(Mockito.anyString(), Mockito.eq(true))).thenReturn(Arrays.asList(replicaClientMock)); + when(replicaClientMock.listSettings(Mockito.any())).thenReturn(List.of()); + } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefreshTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefreshTest.java index b808aa6a07ce..5dfa36ef331e 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefreshTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationPullRefreshTest.java @@ -15,9 +15,12 @@ import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import org.springframework.context.ApplicationEventPublisher; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationRefreshUtil.RefreshEventData; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import net.jcip.annotations.NotThreadSafe; @@ -26,6 +29,9 @@ public class AppConfigurationPullRefreshTest { @Mock private ApplicationEventPublisher publisher; + + @Mock + private ReplicaLookUp replicaLookUpMock; private final Duration refreshInterval = Duration.ofMinutes(10); @@ -33,16 +39,20 @@ public class AppConfigurationPullRefreshTest { @Mock private AppConfigurationReplicaClientFactory clientFactoryMock; + + private MockitoSession session; @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); eventData = new RefreshEventData(); } @AfterEach - public void cleanupMethod() throws Exception { + public void cleanup() throws Exception { MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); } @Test @@ -55,7 +65,7 @@ public void refreshNoChange() throws InterruptedException, ExecutionException { .thenReturn(eventData); AppConfigurationPullRefresh refresh = new AppConfigurationPullRefresh(clientFactoryMock, refreshInterval, - (long) 0); + (long) 0, replicaLookUpMock); assertFalse(refresh.refreshConfigurations().block()); } } @@ -71,7 +81,7 @@ public void refreshUpdate() throws InterruptedException, ExecutionException { .thenReturn(eventData); AppConfigurationPullRefresh refresh = new AppConfigurationPullRefresh(clientFactoryMock, refreshInterval, - (long) 0); + (long) 0, replicaLookUpMock); refresh.setApplicationEventPublisher(publisher); assertTrue(refresh.refreshConfigurations().block()); } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtilTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtilTest.java index 3d00071b962c..d2890ae89e6a 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtilTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationRefreshUtilTest.java @@ -14,11 +14,10 @@ import java.time.Duration; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @@ -26,11 +25,16 @@ import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; import com.azure.data.appconfiguration.models.SettingSelector; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationRefreshUtil.RefreshEventData; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlagState; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationStoreMonitoring; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.FeatureFlagKeyValueSelector; @@ -46,9 +50,6 @@ public class AppConfigurationRefreshUtilTest { @Mock private AppConfigurationReplicaClientFactory clientFactoryMock; - @Mock - private List watchKeyListMock; - @Mock private AppConfigurationReplicaClient clientOriginMock; @@ -58,52 +59,55 @@ public class AppConfigurationRefreshUtilTest { @Mock private ConnectionManager connectionManagerMock; + @Mock + private ReplicaLookUp replicaLookUpMock; + private ConfigStore configStore; private String endpoint; - private RefreshEventData eventData = new RefreshEventData(); - - private final List clients = new ArrayList<>(); - - private final List watchKeys = generateWatchKeys(); - private final List watchKeysFeatureFlags = generateFeatureFlagWatchKeys(); private final AppConfigurationStoreMonitoring monitoring = new AppConfigurationStoreMonitoring(); private final FeatureFlagStore featureStore = new FeatureFlagStore(); + private MockitoSession session; + @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); configStore = new ConfigStore(); featureStore.setEnabled(true); - List ffSelects = new ArrayList<>(); FeatureFlagKeyValueSelector ffSelect = new FeatureFlagKeyValueSelector().setKeyFilter(FEATURE_FLAG_PREFIX) .setLabelFilter(EMPTY_LABEL); - ffSelects.add(ffSelect); - featureStore.setSelects(ffSelects); + featureStore.setSelects(List.of(ffSelect)); configStore.setFeatureFlags(featureStore); monitoring.setEnabled(true); featureStore.setEnabled(true); } + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); + } + @Test public void refreshWithoutTimeWatchKeyConfigStoreNotLoaded(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); - when(clientMock.getWatchKey(Mockito.eq(KEY_FILTER), Mockito.eq(EMPTY_LABEL))).thenReturn(watchKeys.get(0)); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.getLoadState(endpoint)).thenReturn(false); assertFalse( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @@ -111,7 +115,9 @@ public void refreshWithoutTimeWatchKeyConfigStoreNotLoaded(TestInfo testInfo) { public void refreshWithoutTimeWatchKeyConfigStoreWatchKeyNotReturned(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); + List watchKeys = generateWatchKeys(); State newState = new State(watchKeys, Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); // Config Store doesn't return a watch key change. @@ -121,9 +127,7 @@ public void refreshWithoutTimeWatchKeyConfigStoreWatchKeyNotReturned(TestInfo te stateHolderMock.when(() -> StateHolder.getState(endpoint)).thenReturn(newState); assertFalse( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @@ -131,27 +135,19 @@ public void refreshWithoutTimeWatchKeyConfigStoreWatchKeyNotReturned(TestInfo te public void refreshWithoutTimeWatchKeyConfigStoreWatchKeyNoChange(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); - ConfigurationSetting updatedWatchKey = new ConfigurationSetting().setKey(KEY_FILTER).setLabel(EMPTY_LABEL) - .setETag("updated"); - - State newState = new State(watchKeys, Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); - - List listedKeys = new ArrayList<>(); - listedKeys.add(watchKeysFeatureFlags.get(0)); + FeatureFlagState newState = new FeatureFlagState( + List.of(new FeatureFlags(new SettingSelector().setKeyFilter(KEY_FILTER).setLabelFilter(EMPTY_LABEL), null)), + Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); // Config Store does return a watch key change. - when(clientMock.getWatchKey(Mockito.eq(KEY_FILTER), Mockito.eq(EMPTY_LABEL))).thenReturn(updatedWatchKey); - when(clientMock.listSettings(Mockito.any(SettingSelector.class))).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(listedKeys.iterator()); + when(clientMock.checkWatchKeys(Mockito.any(SettingSelector.class))).thenReturn(false); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); assertFalse( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @@ -159,16 +155,13 @@ public void refreshWithoutTimeWatchKeyConfigStoreWatchKeyNoChange(TestInfo testI public void refreshWithoutTimeFeatureFlagDisabled(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); configStore.getFeatureFlags().setEnabled(false); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(false); - assertFalse( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @@ -176,16 +169,13 @@ public void refreshWithoutTimeFeatureFlagDisabled(TestInfo testInfo) { public void refreshWithoutTimeFeatureFlagNotLoaded(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); configStore.getFeatureFlags().setEnabled(true); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(false); - assertFalse( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @@ -193,122 +183,47 @@ public void refreshWithoutTimeFeatureFlagNotLoaded(TestInfo testInfo) { public void refreshWithoutTimeFeatureFlagNoChange(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); - State newState = new State(watchKeysFeatureFlags, Math.toIntExact(Duration.ofMinutes(10).getSeconds()), - endpoint); - - List listedKeys = new ArrayList<>(); - listedKeys.add(watchKeysFeatureFlags.get(0)); + FeatureFlagState newState = new FeatureFlagState( + List.of(new FeatureFlags(new SettingSelector().setKeyFilter(KEY_FILTER).setLabelFilter(EMPTY_LABEL), null)), + Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); // Config Store doesn't return a watch key change. - when(clientMock.listSettings(Mockito.any(SettingSelector.class))).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(listedKeys.iterator()); - + when(clientMock.checkWatchKeys(Mockito.any(SettingSelector.class))).thenReturn(false); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); assertFalse( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @Test - public void refreshWithoutTimeFeatureFlagNoWatchKeyReturned(TestInfo testInfo) { + public void refreshWithoutTimeFeatureFlagEtagChanged(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; when(clientMock.getEndpoint()).thenReturn(endpoint); + when(clientFactoryMock.findOriginForEndpoint(Mockito.eq(endpoint))).thenReturn(endpoint); - ConfigurationSetting updatedWatchKey = new FeatureFlagConfigurationSetting("Alpha", false) - .setETag("updated").setLabel(EMPTY_LABEL); - - List listedKeys = new ArrayList<>(); - listedKeys.add(updatedWatchKey); - - State newState = new State(watchKeysFeatureFlags, Math.toIntExact(Duration.ofMinutes(10).getSeconds()), - endpoint); + FeatureFlags featureFlags = new FeatureFlags(new SettingSelector(), watchKeysFeatureFlags); + FeatureFlagState newState = new FeatureFlagState(List.of(featureFlags), + Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); // Config Store does return a watch key change. - when(clientMock.listSettings(Mockito.any(SettingSelector.class))).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(listedKeys.iterator()); - try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); - stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); - - assertTrue( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - - } - } - - @Test - public void refreshWithoutTimeFeatureFlagWasDeleted(TestInfo testInfo) { - endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - // Config Store doesn't return a value, Feature Flag was deleted - when(clientMock.listSettings(Mockito.any(SettingSelector.class))).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(Collections.emptyIterator()); - - State newState = new State(watchKeysFeatureFlags, Math.toIntExact(Duration.ofMinutes(10).getSeconds()), - endpoint); - + when(clientMock.checkWatchKeys(Mockito.any(SettingSelector.class))).thenReturn(true); try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); assertTrue( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - - } - } - - @Test - public void refreshWithoutTimeFeatureFlagWasAdded(TestInfo testInfo) { - endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - ConfigurationSetting extraFeatureFlag = new FeatureFlagConfigurationSetting("Beta", false) - .setETag("new"); - - List listedKeys = generateFeatureFlagWatchKeys(); - listedKeys.add(extraFeatureFlag); - State newState = new State(watchKeysFeatureFlags, Math.toIntExact(Duration.ofMinutes(10).getSeconds()), - endpoint); - - // Config Store returns a new feature flag - when(clientMock.listSettings(Mockito.any(SettingSelector.class))).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(listedKeys.iterator()); - try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); - stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); - - assertTrue( - AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore, - new ArrayList<>())); - + AppConfigurationRefreshUtil.checkStoreAfterRefreshFailed(clientMock, clientFactoryMock, featureStore)); } } @Test public void refreshStoresCheckSettingsTestNotEnabled(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); + setupFeatureFlagLoad(); State newState = new State(generateWatchKeys(), Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); @@ -318,8 +233,9 @@ public void refreshStoresCheckSettingsTestNotEnabled(TestInfo testInfo) { stateHolderMock.when(() -> StateHolder.getState(endpoint)).thenReturn(newState); // Monitor is disabled - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), + (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -329,18 +245,7 @@ public void refreshStoresCheckSettingsTestNotEnabled(TestInfo testInfo) { @Test public void refreshStoresCheckSettingsTestNotLoaded(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); + setupFeatureFlagLoad(); State newState = new State(generateWatchKeys(), Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); @@ -348,8 +253,8 @@ public void refreshStoresCheckSettingsTestNotLoaded(TestInfo testInfo) { stateHolderMock.when(() -> StateHolder.getLoadState(endpoint)).thenReturn(false); stateHolderMock.when(() -> StateHolder.getState(endpoint)).thenReturn(newState); - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -359,19 +264,7 @@ public void refreshStoresCheckSettingsTestNotLoaded(TestInfo testInfo) { @Test public void refreshStoresCheckSettingsTestNotRefreshTime(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - // Not Refresh Time - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); + setupFeatureFlagLoad(); State newState = new State(generateWatchKeys(), Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); @@ -379,8 +272,9 @@ public void refreshStoresCheckSettingsTestNotRefreshTime(TestInfo testInfo) { stateHolderMock.when(() -> StateHolder.getLoadState(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getState(endpoint)).thenReturn(newState); - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), + (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -390,19 +284,7 @@ public void refreshStoresCheckSettingsTestNotRefreshTime(TestInfo testInfo) { @Test public void refreshStoresCheckSettingsTestFailedRequest(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - // Refresh Time, but failed watch request - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); + setupFeatureFlagLoad(); State newState = new State(generateWatchKeys(), Math.toIntExact(Duration.ofMinutes(-1).getSeconds()), endpoint); @@ -412,8 +294,9 @@ public void refreshStoresCheckSettingsTestFailedRequest(TestInfo testInfo) { StateHolder updatedStateHolder = new StateHolder(); stateHolderMock.when(() -> StateHolder.getCurrentState()).thenReturn(updatedStateHolder); - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), + (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(1)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -424,19 +307,8 @@ public void refreshStoresCheckSettingsTestFailedRequest(TestInfo testInfo) { @Test public void refreshStoresCheckSettingsTestRefreshTimeNoChange(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); + setupFeatureFlagLoad(); - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - // Refresh Time, but no change - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); when(clientOriginMock.getWatchKey(Mockito.anyString(), Mockito.anyString())) .thenReturn(generateWatchKeys().get(0)); @@ -448,8 +320,8 @@ public void refreshStoresCheckSettingsTestRefreshTimeNoChange(TestInfo testInfo) StateHolder updatedStateHolder = new StateHolder(); stateHolderMock.when(() -> StateHolder.getCurrentState()).thenReturn(updatedStateHolder); - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), (long) 60, replicaLookUpMock); assertEquals(newState, StateHolder.getState(endpoint)); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); @@ -460,19 +332,11 @@ public void refreshStoresCheckSettingsTestRefreshTimeNoChange(TestInfo testInfo) @Test public void refreshStoresCheckSettingsTestTriggerRefresh(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); + when(clientFactoryMock.getConnections()).thenReturn(Map.of(endpoint, connectionManagerMock)); // Refresh Time, trigger refresh - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); + when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(List.of(clientOriginMock)); ConfigurationSetting refreshKey = new ConfigurationSetting().setKey(KEY_FILTER).setLabel(EMPTY_LABEL) .setETag("new"); @@ -486,8 +350,9 @@ public void refreshStoresCheckSettingsTestTriggerRefresh(TestInfo testInfo) { stateHolderMock.when(() -> StateHolder.getState(endpoint)).thenReturn(newState); stateHolderMock.when(StateHolder::getCurrentState).thenReturn(currentStateMock); - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), + (long) 60, replicaLookUpMock); assertTrue(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(1)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -498,30 +363,19 @@ public void refreshStoresCheckSettingsTestTriggerRefresh(TestInfo testInfo) { @Test public void refreshStoresCheckFeatureFlagTestNotLoaded(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); + setupFeatureFlagLoad(); - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); - - State newState = new State(generateFeatureFlagWatchKeys(), Math.toIntExact(Duration.ofMinutes(10).getSeconds()), - endpoint); + FeatureFlagState newState = new FeatureFlagState(List.of(), + Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); // Config Store doesn't return a watch key change. try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(false); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); // Monitor is disabled - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), + (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -531,30 +385,19 @@ public void refreshStoresCheckFeatureFlagTestNotLoaded(TestInfo testInfo) { @Test public void refreshStoresCheckFeatureFlagTestNotRefreshTime(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); + setupFeatureFlagLoad(); - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); - - State newState = new State(generateFeatureFlagWatchKeys(), Math.toIntExact(Duration.ofMinutes(10).getSeconds()), - endpoint); + FeatureFlagState newState = new FeatureFlagState(List.of(), + Math.toIntExact(Duration.ofMinutes(10).getSeconds()), endpoint); // Config Store doesn't return a watch key change. try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); // Monitor is disabled - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), + (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); @@ -564,43 +407,29 @@ public void refreshStoresCheckFeatureFlagTestNotRefreshTime(TestInfo testInfo) { @Test public void refreshStoresCheckFeatureFlagTestNoChange(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); configStore.setEndpoint(endpoint); configStore.setFeatureFlags(featureStore); configStore.setMonitoring(monitoring); - List listedKeys = new ArrayList<>(); - listedKeys.add(watchKeysFeatureFlags.get(0)); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); - - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); - when(clientOriginMock.listSettings(Mockito.any())).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(listedKeys.iterator()); + setupFeatureFlagLoad(); + when(clientOriginMock.checkWatchKeys(Mockito.any())).thenReturn(false); - State newState = new State(generateFeatureFlagWatchKeys(), Math.toIntExact(Duration.ofMinutes(-1).getSeconds()), - endpoint); + FeatureFlagState newState = new FeatureFlagState( + List.of(new FeatureFlags(new SettingSelector().setKeyFilter(KEY_FILTER).setLabelFilter(EMPTY_LABEL), null)), + Math.toIntExact(Duration.ofMinutes(-1).getSeconds()), endpoint); // Config Store doesn't return a watch key change. try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); stateHolderMock.when(StateHolder::getCurrentState).thenReturn(currentStateMock); // Monitor is disabled - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), (long) 60, replicaLookUpMock); assertFalse(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); - verify(currentStateMock, times(1)).updateStateRefresh(Mockito.any(), Mockito.any()); + verify(currentStateMock, times(1)).updateFeatureFlagStateRefresh(Mockito.any(), Mockito.any()); } } @@ -608,44 +437,25 @@ public void refreshStoresCheckFeatureFlagTestNoChange(TestInfo testInfo) { @Test public void refreshStoresCheckFeatureFlagTestTriggerRefresh(TestInfo testInfo) { endpoint = testInfo.getDisplayName() + ".azconfig.io"; - when(clientMock.getEndpoint()).thenReturn(endpoint); - - clients.add(clientOriginMock); - - Map connections = new HashMap<>(); - connections.put(endpoint, connectionManagerMock); - - when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); - when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); - when(clientFactoryMock.getConnections()).thenReturn(connections); + setupFeatureFlagLoad(); + when(clientOriginMock.checkWatchKeys(Mockito.any())).thenReturn(true); - List listedKeys = new ArrayList<>(); + FeatureFlags featureFlags = new FeatureFlags(new SettingSelector(), watchKeysFeatureFlags); - FeatureFlagConfigurationSetting updated = (FeatureFlagConfigurationSetting) watchKeysFeatureFlags.get(0); - updated.setETag("new"); - - listedKeys.add(updated); - - when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(clients); - when(clientOriginMock.listSettings(Mockito.any())).thenReturn(watchKeyListMock); - when(watchKeyListMock.iterator()).thenReturn(listedKeys.iterator()); - - State newState = new State(generateFeatureFlagWatchKeys(), Math.toIntExact(Duration.ofMinutes(-1).getSeconds()), - endpoint); + FeatureFlagState newState = new FeatureFlagState(List.of(featureFlags), + Math.toIntExact(Duration.ofMinutes(-1).getSeconds()), endpoint); // Config Store doesn't return a watch key change. try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { - stateHolderMock.when(() -> StateHolder.getLoadStateFeatureFlag(endpoint)).thenReturn(true); stateHolderMock.when(() -> StateHolder.getStateFeatureFlag(endpoint)).thenReturn(newState); stateHolderMock.when(StateHolder::getCurrentState).thenReturn(currentStateMock); // Monitor is disabled - eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, Duration.ofMinutes(10), - new ArrayList<>(), (long) 60); + RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, + Duration.ofMinutes(10), (long) 60, replicaLookUpMock); assertTrue(eventData.getDoRefresh()); verify(clientFactoryMock, times(1)).setCurrentConfigStoreClient(Mockito.eq(endpoint), Mockito.eq(endpoint)); verify(clientOriginMock, times(0)).getWatchKey(Mockito.anyString(), Mockito.anyString()); - verify(currentStateMock, times(1)).updateStateRefresh(Mockito.any(), Mockito.any()); } } @@ -654,11 +464,18 @@ public void minRefreshPeriodTest() { try (MockedStatic stateHolderMock = Mockito.mockStatic(StateHolder.class)) { stateHolderMock.when(() -> StateHolder.getNextForcedRefresh()).thenReturn(Instant.now().minusSeconds(600)); RefreshEventData eventData = AppConfigurationRefreshUtil.refreshStoresCheck(clientFactoryMock, - Duration.ofMinutes(1), new ArrayList(), (long) 0); + Duration.ofMinutes(1), (long) 0, replicaLookUpMock); assertTrue(eventData.getDoRefresh()); assertEquals("Minimum refresh period reached. Refreshing configurations.", eventData.getMessage()); } } + + private void setupFeatureFlagLoad() { + when(connectionManagerMock.getMonitoring()).thenReturn(monitoring); + when(connectionManagerMock.getFeatureFlagStore()).thenReturn(featureStore); + when(clientFactoryMock.getConnections()).thenReturn(Map.of(endpoint, connectionManagerMock)); + when(clientFactoryMock.getAvailableClients(Mockito.eq(endpoint))).thenReturn(List.of(clientOriginMock)); + } private List generateWatchKeys() { List watchKeys = new ArrayList<>(); diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientBuilderTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientBuilderTest.java index f84b759d57bb..3dda6cd72a43 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientBuilderTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientBuilderTest.java @@ -18,12 +18,14 @@ import java.util.ArrayList; import java.util.List; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import org.springframework.core.env.Environment; import com.azure.core.credential.TokenCredential; @@ -46,16 +48,19 @@ public class AppConfigurationReplicaClientBuilderTest { AppConfigurationReplicaClientsBuilder clientBuilder; private ConfigStore configStore; - + @Mock private ConfigurationClientBuilderFactory clientFactoryMock; - + @Mock private Environment envMock; + private MockitoSession session; + @BeforeEach public void setup() { MockitoAnnotations.openMocks(this); + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); configStore = new ConfigStore(); configStore.setEndpoint(TEST_ENDPOINT); @@ -64,7 +69,12 @@ public void setup() { clientBuilder = null; when(envMock.getActiveProfiles()).thenReturn(new String[0]); - when(clientFactoryMock.build()).thenReturn(builderMock); + } + + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); } @Test @@ -73,6 +83,7 @@ public void buildClientFromEndpointTest() { clientBuilder.setEnvironment(envMock); AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + when(clientFactoryMock.build()).thenReturn(builderMock); ConfigurationClientBuilder builder = new ConfigurationClientBuilder(); when(builderMock.endpoint(Mockito.eq(TEST_ENDPOINT))).thenReturn(builder); when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); @@ -94,9 +105,9 @@ public void buildClientFromConnectionStringTest() { clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); clientBuilder.setEnvironment(envMock); AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); - - when(builderMock.connectionString(Mockito.anyString())).thenReturn(builderMock); + when(clientFactoryMock.build()).thenReturn(builderMock); + when(builderMock.connectionString(Mockito.anyString())).thenReturn(builderMock); List clients = spy.buildClients(configStore); @@ -118,6 +129,7 @@ public void modifyClientTest() { ConfigurationClientBuilder builder = new ConfigurationClientBuilder(); when(builderMock.endpoint(Mockito.eq(TEST_ENDPOINT))).thenReturn(builder); when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); + when(clientFactoryMock.build()).thenReturn(builderMock); AppConfigurationReplicaClient replicaClient = spy.buildClients(configStore).get(0); @@ -149,6 +161,7 @@ public void buildClientsFromMultipleEndpointsTest() { ConfigurationClientBuilder builder = new ConfigurationClientBuilder(); when(builderMock.endpoint(Mockito.eq(TEST_ENDPOINT))).thenReturn(builder); when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); + when(clientFactoryMock.build()).thenReturn(builderMock); List clients = spy.buildClients(configStore); @@ -156,7 +169,6 @@ public void buildClientsFromMultipleEndpointsTest() { } @Test - @Disabled // Waiting on Server Side Support for connection strings public void buildClientsFromMultipleConnectionStringsTest() { configStore = new ConfigStore(); List connectionStrings = new ArrayList<>(); @@ -164,7 +176,7 @@ public void buildClientsFromMultipleConnectionStringsTest() { connectionStrings.add(TEST_CONN_STRING); connectionStrings.add(TEST_CONN_STRING_GEO); - // configStore.setConnectionStrings(connectionStrings); + configStore.setConnectionStrings(connectionStrings); configStore.validateAndInit(); @@ -172,10 +184,10 @@ public void buildClientsFromMultipleConnectionStringsTest() { clientBuilder.setEnvironment(envMock); AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); - - ConfigurationClientBuilder builder = new ConfigurationClientBuilder(); - when(builderMock.endpoint(Mockito.eq(TEST_ENDPOINT))).thenReturn(builder); + when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); + when(clientFactoryMock.build()).thenReturn(builderMock); + when(builderMock.connectionString(Mockito.anyString())).thenReturn(builderMock); List clients = spy.buildClients(configStore); @@ -199,7 +211,105 @@ public void endpointAndConnectionString() { String message = assertThrows(IllegalArgumentException.class, () -> clientBuilder.buildClients(configStore).get(0)).getMessage(); - assertEquals("More than 1 Connection method was set for connecting to App Configuration.", message); + assertEquals("More than 1 connection method was set for connecting to App Configuration.", message); + } + + @Test + public void buildClientTest() { + clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); + clientBuilder.setEnvironment(envMock); + AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + + when(clientFactoryMock.build()).thenReturn(builderMock); + ConfigurationClientBuilder builder = new ConfigurationClientBuilder(); + when(builderMock.endpoint(Mockito.eq(TEST_ENDPOINT))).thenReturn(builder); + when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); + + AppConfigurationReplicaClient replicaClient = spy.buildClient("https://fake.test.config.io", configStore); + + assertNotNull(replicaClient); + assertTrue(replicaClient.getBackoffEndTime().isBefore(Instant.now().plusSeconds(1))); + assertEquals(TEST_ENDPOINT, replicaClient.getEndpoint()); + assertEquals(0, replicaClient.getFailedAttempts()); + } + + @Test + public void buildClientConnectionStringTest() { + configStore.setConnectionString(TEST_CONN_STRING); + clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); + clientBuilder.setEnvironment(envMock); + AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + + when(clientFactoryMock.build()).thenReturn(builderMock); + when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); + when(builderMock.connectionString(Mockito.anyString())).thenReturn(builderMock); + + AppConfigurationReplicaClient replicaClient = spy.buildClient("https://fake.test.config.io", configStore); + + assertNotNull(replicaClient); + assertTrue(replicaClient.getBackoffEndTime().isBefore(Instant.now().plusSeconds(1))); + assertEquals(TEST_ENDPOINT, replicaClient.getEndpoint()); + assertEquals(0, replicaClient.getFailedAttempts()); + } + + @Test + public void buildClientConnectionStringsTest() { + configStore.setConnectionStrings(List.of(TEST_CONN_STRING, TEST_CONN_STRING_GEO)); + clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); + clientBuilder.setEnvironment(envMock); + AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + + when(builderMock.addPolicy(Mockito.any())).thenReturn(builderMock); + when(builderMock.connectionString(Mockito.anyString())).thenReturn(builderMock); + when(clientFactoryMock.build()).thenReturn(builderMock); + + AppConfigurationReplicaClient replicaClient = spy.buildClient("https://fake.test.config.io", configStore); + + assertNotNull(replicaClient); + assertTrue(replicaClient.getBackoffEndTime().isBefore(Instant.now().plusSeconds(1))); + assertEquals(TEST_ENDPOINT, replicaClient.getEndpoint()); + assertEquals(0, replicaClient.getFailedAttempts()); + } + + @Test + public void buildClientConnectionStringInvalidTest() { + configStore.setConnectionString(TEST_CONN_STRING); + clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); + clientBuilder.setEnvironment(envMock); + AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + + IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> spy.buildClient("fake.test.config.io", configStore)); + + assertEquals("java.net.MalformedURLException: no protocol: fake.test.config.io", exception.getMessage()); + } + + @Test + public void buildClientConnectionStringInvalid2Test() { + configStore.setConnectionString("Not A Connection String"); + clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); + clientBuilder.setEnvironment(envMock); + AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + + IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> spy.buildClient("fake.test.config.io", configStore)); + + assertEquals("invalid connection string segment count", exception.getMessage()); + } + + @Test + public void buildClientConnectionStringInvalid3Test() { + configStore.setConnectionString("Not;A;Connection String"); + clientBuilder = new AppConfigurationReplicaClientsBuilder(0, clientFactoryMock, false); + clientBuilder.setEnvironment(envMock); + AppConfigurationReplicaClientsBuilder spy = Mockito.spy(clientBuilder); + + IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, + () -> spy.buildClient("fake.test.config.io", configStore)); + + assertEquals( + "Could not parse 'connectionString'. Expected format: 'endpoint={endpoint};id={id};secret={secret}'. Actual:Not;A;Connection String", + exception.getMessage()); } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactoryTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactoryTest.java index ad44817e0933..3be2260be0f4 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactoryTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientFactoryTest.java @@ -9,11 +9,16 @@ import java.util.ArrayList; import java.util.List; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; public class AppConfigurationReplicaClientFactoryTest { @@ -22,6 +27,9 @@ public class AppConfigurationReplicaClientFactoryTest { @Mock private AppConfigurationReplicaClientsBuilder clientBuilderMock; + + @Mock + private ReplicaLookUp replicaLookUpMock; private final String originEndpoint = "clientFactoryTest.azconfig.io"; @@ -30,9 +38,12 @@ public class AppConfigurationReplicaClientFactoryTest { private final String noReplicaEndpoint = "noReplica.azconfig.io"; private final String invalidReplica = "invalidReplica.azconfig.io"; + + private MockitoSession session; @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); List stores = new ArrayList<>(); @@ -50,9 +61,14 @@ public void setup() { storeNoReplica.setEndpoint(noReplicaEndpoint); stores.add(storeNoReplica); - clientFactory = new AppConfigurationReplicaClientFactory(clientBuilderMock, stores); + clientFactory = new AppConfigurationReplicaClientFactory(clientBuilderMock, stores, replicaLookUpMock); } + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); + } @Test public void findOriginTest() { assertEquals(originEndpoint, clientFactory.findOriginForEndpoint(originEndpoint)); diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientTest.java index 44bd80c6d93b..68d57642399e 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/AppConfigurationReplicaClientTest.java @@ -3,6 +3,7 @@ package com.azure.spring.cloud.appconfiguration.config.implementation; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.reset; @@ -10,30 +11,43 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.io.IOException; import java.io.UncheckedIOException; import java.net.UnknownHostException; import java.time.Instant; import java.util.ArrayList; import java.util.List; +import java.util.function.Supplier; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import com.azure.core.exception.HttpResponseException; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpResponse; +import com.azure.core.http.rest.PagedFlux; import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponse; +import com.azure.core.http.rest.PagedResponseBase; import com.azure.core.util.Configuration; import com.azure.data.appconfiguration.ConfigurationClient; import com.azure.data.appconfiguration.models.ConfigurationSetting; import com.azure.data.appconfiguration.models.ConfigurationSnapshot; +import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; import com.azure.data.appconfiguration.models.SettingSelector; import com.azure.data.appconfiguration.models.SnapshotComposition; import com.azure.identity.CredentialUnavailableException; import com.azure.spring.cloud.appconfiguration.config.implementation.http.policy.TracingInfo; +import reactor.core.publisher.Mono; + public class AppConfigurationReplicaClientTest { @Mock @@ -48,13 +62,25 @@ public class AppConfigurationReplicaClientTest { @Mock private PagedIterable settingsMock; + @Mock + private Supplier>> supplierMock; + private final String endpoint = "clientTest.azconfig.io"; + private MockitoSession session; + @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); } + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); + } + @Test public void getWatchKeyTest() { AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, @@ -80,8 +106,9 @@ public void getWatchKeyTest() { when(responseMock.getStatusCode()).thenReturn(499); assertThrows(HttpResponseException.class, () -> client.getWatchKey("watch", "\0")); - - when(clientMock.getConfigurationSetting(Mockito.any(), Mockito.any())).thenThrow(new UncheckedIOException(new UnknownHostException())); + + when(clientMock.getConfigurationSetting(Mockito.any(), Mockito.any())) + .thenThrow(new UncheckedIOException(new UnknownHostException())); assertThrows(AppConfigurationStatusException.class, () -> client.getWatchKey("watch", "\0")); } @@ -90,10 +117,15 @@ public void listSettingsTest() { AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - List configurations = new ArrayList<>(); + ConfigurationSetting configurationSetting = new ConfigurationSetting().setKey("test-key"); + List configurations = List.of(configurationSetting); + + PagedFlux pagedFlux = new PagedFlux<>(supplierMock); + PagedResponse pagedResponse = new PagedResponseBase(null, + 200, null, configurations, null, null); + when(supplierMock.get()).thenReturn(Mono.just(pagedResponse)); - when(clientMock.listConfigurationSettings(Mockito.any())).thenReturn(settingsMock); - when(settingsMock.iterator()).thenReturn(configurations.iterator()); + when(clientMock.listConfigurationSettings(Mockito.any())).thenReturn(new PagedIterable<>(pagedFlux)); assertEquals(configurations, client.listSettings(new SettingSelector())); @@ -111,13 +143,48 @@ public void listSettingsTest() { when(responseMock.getStatusCode()).thenReturn(499); assertThrows(HttpResponseException.class, () -> client.listSettings(new SettingSelector())); } - + + @Test + public void listFeatureFlagsTest() { + AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, + new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); + + FeatureFlagConfigurationSetting featureFlag = new FeatureFlagConfigurationSetting("Alpha", false); + List configurations = List.of(featureFlag); + + PagedFlux pagedFlux = new PagedFlux<>(supplierMock); + HttpHeaders headers = new HttpHeaders().add(HttpHeaderName.ETAG, "fake-etag"); + PagedResponse pagedResponse = new PagedResponseBase(null, + 200, headers, configurations, null, null); + + when(supplierMock.get()).thenReturn(Mono.just(pagedResponse)); + + when(clientMock.listConfigurationSettings(Mockito.any())).thenReturn(new PagedIterable<>(pagedFlux)); + + assertEquals(configurations, client.listFeatureFlags(new SettingSelector()).getFeatureFlags()); + + when(clientMock.listConfigurationSettings(Mockito.any())).thenThrow(exceptionMock); + when(exceptionMock.getResponse()).thenReturn(responseMock); + when(responseMock.getStatusCode()).thenReturn(429); + assertThrows(AppConfigurationStatusException.class, () -> client.listFeatureFlags(new SettingSelector())); + + when(responseMock.getStatusCode()).thenReturn(408); + assertThrows(AppConfigurationStatusException.class, () -> client.listFeatureFlags(new SettingSelector())); + + when(responseMock.getStatusCode()).thenReturn(500); + assertThrows(AppConfigurationStatusException.class, () -> client.listFeatureFlags(new SettingSelector())); + + when(responseMock.getStatusCode()).thenReturn(499); + assertThrows(HttpResponseException.class, () -> client.listFeatureFlags(new SettingSelector())); + } + @Test public void listSettingsUnknownHostTest() { AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - - when(clientMock.listConfigurationSettings(Mockito.any())).thenThrow(new UncheckedIOException(new UnknownHostException())); + + when(clientMock.listConfigurationSettings(Mockito.any())) + .thenThrow(new UncheckedIOException(new UnknownHostException())); assertThrows(AppConfigurationStatusException.class, () -> client.listSettings(new SettingSelector())); } @@ -126,11 +193,8 @@ public void listSettingsNoCredentialTest() { AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - List configurations = new ArrayList<>(); - when(clientMock.listConfigurationSettings(Mockito.any())) .thenThrow(new CredentialUnavailableException("No Credential")); - when(settingsMock.iterator()).thenReturn(configurations.iterator()); assertThrows(CredentialUnavailableException.class, () -> client.listSettings(new SettingSelector())); } @@ -140,11 +204,8 @@ public void getWatchNoCredentialTest() { AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); - List configurations = new ArrayList<>(); - when(clientMock.getConfigurationSetting(Mockito.anyString(), Mockito.anyString())) .thenThrow(new CredentialUnavailableException("No Credential")); - when(settingsMock.iterator()).thenReturn(configurations.iterator()); assertThrows(CredentialUnavailableException.class, () -> client.getWatchKey("key", "label")); } @@ -188,7 +249,6 @@ public void listSettingSnapshotTest() { when(clientMock.getSnapshot(Mockito.any())).thenReturn(snapshot); when(clientMock.listConfigurationSettingsForSnapshot(Mockito.any())).thenReturn(settingsMock); - when(settingsMock.iterator()).thenReturn(configurations.iterator()); assertEquals(configurations, client.listSettingSnapshot("SnapshotName")); @@ -205,7 +265,7 @@ public void listSettingSnapshotTest() { when(responseMock.getStatusCode()).thenReturn(499); assertThrows(HttpResponseException.class, () -> client.listSettingSnapshot("SnapshotName")); - + when(clientMock.getSnapshot(Mockito.any())).thenThrow(new UncheckedIOException(new UnknownHostException())); assertThrows(AppConfigurationStatusException.class, () -> client.listSettingSnapshot("SnapshotName")); } @@ -220,22 +280,62 @@ public void listSettingSnapshotInvalidCompositionTypeTest() { when(clientMock.getSnapshot(Mockito.any())).thenReturn(snapshot); - IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> client.listSettingSnapshot("SnapshotName")); + IllegalArgumentException e = assertThrows(IllegalArgumentException.class, + () -> client.listSettingSnapshot("SnapshotName")); assertEquals("Snapshot SnapshotName needs to be of type Key.", e.getMessage()); } - + @Test public void updateSyncTokenTest() { AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); String fakeToken = "fake_sync_token"; - + client.updateSyncToken(fakeToken); verify(clientMock, times(1)).updateSyncToken(Mockito.eq(fakeToken)); reset(clientMock); - + client.updateSyncToken(null); verify(clientMock, times(0)).updateSyncToken(Mockito.eq(fakeToken)); } + @Test + public void checkWatchKeysTest() { + AppConfigurationReplicaClient client = new AppConfigurationReplicaClient(endpoint, clientMock, + new TracingInfo(false, false, 0, Configuration.getGlobalConfiguration())); + + FeatureFlagConfigurationSetting featureFlag = new FeatureFlagConfigurationSetting("Alpha", false); + List configurations = List.of(featureFlag); + + PagedFlux pagedFlux = new PagedFlux<>(supplierMock); + HttpHeaders headers = new HttpHeaders().add(HttpHeaderName.ETAG, "fake-etag"); + try { + PagedResponse pagedResponse = new PagedResponseBase( + null, 200, headers, configurations, null, null); + + when(supplierMock.get()).thenReturn(Mono.just(pagedResponse)); + + when(clientMock.listConfigurationSettings(Mockito.any())).thenReturn(new PagedIterable<>(pagedFlux)); + + assertTrue(client.checkWatchKeys(new SettingSelector())); + pagedResponse.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + try { + PagedResponse pagedResponse = new PagedResponseBase( + null, 304, headers, configurations, null, null); + + when(supplierMock.get()).thenReturn(Mono.just(pagedResponse)); + + when(clientMock.listConfigurationSettings(Mockito.any())).thenReturn(new PagedIterable<>(pagedFlux)); + + assertFalse(client.checkWatchKeys(new SettingSelector())); + pagedResponse.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManagerTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManagerTest.java index 2368133b2e45..ff6a30fed45b 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManagerTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/ConnectionManagerTest.java @@ -13,13 +13,17 @@ import java.util.ArrayList; import java.util.List; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import com.azure.spring.cloud.appconfiguration.config.AppConfigurationStoreHealth; +import com.azure.spring.cloud.appconfiguration.config.implementation.autofailover.ReplicaLookUp; import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; public class ConnectionManagerTest { @@ -32,13 +36,19 @@ public class ConnectionManagerTest { @Mock private AppConfigurationReplicaClient replicaClient2; + + @Mock + private ReplicaLookUp replicaLookUpMock; private ConnectionManager connectionManager; private ConfigStore configStore; + + private MockitoSession session; @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); configStore = new ConfigStore(); @@ -48,12 +58,18 @@ public void setup() { connectionManager = null; } + + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); + } @Test public void getStoreIdentifierTest() { - connectionManager = new ConnectionManager(clientBuilderMock, configStore); + connectionManager = new ConnectionManager(clientBuilderMock, configStore, replicaLookUpMock); - assertEquals(TEST_ENDPOINT, connectionManager.getOriginEndpoint()); + assertEquals(TEST_ENDPOINT, connectionManager.getMainEndpoint()); configStore.setEndpoint(null); @@ -64,9 +80,9 @@ public void getStoreIdentifierTest() { configStore.setEndpoints(endpoints); configStore.validateAndInit(); - connectionManager = new ConnectionManager(clientBuilderMock, configStore); + connectionManager = new ConnectionManager(clientBuilderMock, configStore, replicaLookUpMock); - assertEquals("first.endpoint", connectionManager.getOriginEndpoint()); + assertEquals("first.endpoint", connectionManager.getMainEndpoint()); } @Test @@ -81,7 +97,7 @@ public void backoffTest() { configStore.validateAndInit(); - connectionManager = new ConnectionManager(clientBuilderMock, configStore); + connectionManager = new ConnectionManager(clientBuilderMock, configStore, replicaLookUpMock); List clients = new ArrayList<>(); clients.add(replicaClient1); @@ -138,9 +154,10 @@ public void backoffTest() { @Test public void updateSyncTokenTest() { String fakeToken = "fakeToken"; - ConnectionManager manager = new ConnectionManager(clientBuilderMock, configStore); + ConnectionManager manager = new ConnectionManager(clientBuilderMock, configStore, replicaLookUpMock); List clients = new ArrayList<>(); + when(replicaClient1.getBackoffEndTime()).thenReturn(Instant.now().minusSeconds(1)); clients.add(replicaClient1); when(clientBuilderMock.buildClients(Mockito.eq(configStore))).thenReturn(clients); @@ -156,8 +173,8 @@ public void updateSyncTokenTest() { @Test public void getAvailableClientsNotLoadedTest() { - ConnectionManager manager = new ConnectionManager(clientBuilderMock, configStore); - + ConnectionManager manager = new ConnectionManager(clientBuilderMock, configStore, replicaLookUpMock); + assertEquals(0, manager.getAvailableClients().size()); assertEquals(AppConfigurationStoreHealth.NOT_LOADED, manager.getHealth()); } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/FeatureFlagClientTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/FeatureFlagClientTest.java new file mode 100644 index 000000000000..6f5bcf70e29c --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/FeatureFlagClientTest.java @@ -0,0 +1,193 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation; + +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.DEFAULT_ROLLOUT_PERCENTAGE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.E_TAG; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_CONTENT_TYPE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_ID; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.FEATURE_FLAG_REFERENCE; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.GROUPS; +import static com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationConstants.USERS; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_LABEL; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_VALUE_TELEMETRY; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_ENDPOINT; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.TEST_E_TAG; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestConstants.FEATURE_VALUE_ALL; +import static com.azure.spring.cloud.appconfiguration.config.implementation.TestUtils.createItemFeatureFlag; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; + +import com.azure.data.appconfiguration.models.ConfigurationSetting; +import com.azure.data.appconfiguration.models.FeatureFlagConfigurationSetting; +import com.azure.data.appconfiguration.models.FeatureFlagFilter; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.FeatureFlags; +import com.azure.spring.cloud.appconfiguration.config.implementation.feature.entity.Feature; + +public class FeatureFlagClientTest { + + @Mock + private AppConfigurationReplicaClient clientMock; + + private FeatureFlagClient featureFlagClient; + + private String[] emptyLabelList = { "\0" }; + + private static final FeatureFlagConfigurationSetting TELEMETRY_FEATURE = createItemFeatureFlag( + ".appconfig.featureflag/", "Delta", + FEATURE_VALUE_TELEMETRY, FEATURE_LABEL, FEATURE_FLAG_CONTENT_TYPE, TEST_E_TAG); + + private static final FeatureFlagConfigurationSetting ALL_FEATURE = createItemFeatureFlag( + ".appconfig.featureflag/", "Delta", + FEATURE_VALUE_ALL, FEATURE_LABEL, FEATURE_FLAG_CONTENT_TYPE, TEST_E_TAG); + + private MockitoSession session; + + @BeforeEach + public void init() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); + MockitoAnnotations.openMocks(this); + + featureFlagClient = new FeatureFlagClient(); + } + + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); + } + + @Test + public void loadFeatureFlagsTestNoFeatureFlags() { + List settings = List.of(new ConfigurationSetting().setKey("FakeKey")); + FeatureFlags featureFlags = new FeatureFlags(null, settings); + when(clientMock.listFeatureFlags(Mockito.any())).thenReturn(featureFlags); + + List featureFlagsList = featureFlagClient.loadFeatureFlags(clientMock, null, emptyLabelList); + assertEquals(1, featureFlagsList.size()); + assertEquals(featureFlags, featureFlagsList.get(0)); + assertEquals("FakeKey", featureFlagsList.get(0).getFeatureFlags().get(0).getKey()); + assertEquals(0, featureFlagClient.getProperties().size()); + } + + @Test + public void loadFeatureFlagsTestFeatureFlags() { + List settings = List.of(new FeatureFlagConfigurationSetting("Alpha", false), + new FeatureFlagConfigurationSetting("Beta", true)); + FeatureFlags featureFlags = new FeatureFlags(null, settings); + when(clientMock.listFeatureFlags(Mockito.any())).thenReturn(featureFlags); + + List featureFlagsList = featureFlagClient.loadFeatureFlags(clientMock, null, emptyLabelList); + assertEquals(1, featureFlagsList.size()); + assertEquals(featureFlags, featureFlagsList.get(0)); + assertEquals(".appconfig.featureflag/Alpha", featureFlagsList.get(0).getFeatureFlags().get(0).getKey()); + assertEquals(".appconfig.featureflag/Beta", featureFlagsList.get(0).getFeatureFlags().get(1).getKey()); + assertEquals(2, featureFlagClient.getProperties().size()); + } + + @Test + public void loadFeatureFlagsTestMultipleLoads() { + List settings = List.of(new FeatureFlagConfigurationSetting("Alpha", false), + new FeatureFlagConfigurationSetting("Beta", true)); + FeatureFlags featureFlags = new FeatureFlags(null, settings); + when(clientMock.listFeatureFlags(Mockito.any())).thenReturn(featureFlags); + + List featureFlagsList = featureFlagClient.loadFeatureFlags(clientMock, null, emptyLabelList); + assertEquals(1, featureFlagsList.size()); + assertEquals(featureFlags, featureFlagsList.get(0)); + assertEquals(".appconfig.featureflag/Alpha", featureFlagsList.get(0).getFeatureFlags().get(0).getKey()); + assertEquals(".appconfig.featureflag/Beta", featureFlagsList.get(0).getFeatureFlags().get(1).getKey()); + assertEquals(2, featureFlagClient.getProperties().size()); + + List settings2 = List.of(new FeatureFlagConfigurationSetting("Alpha", true), + new FeatureFlagConfigurationSetting("Gamma", false)); + featureFlags = new FeatureFlags(null, settings2); + when(clientMock.listFeatureFlags(Mockito.any())).thenReturn(featureFlags); + + featureFlagsList = featureFlagClient.loadFeatureFlags(clientMock, null, emptyLabelList); + assertEquals(1, featureFlagsList.size()); + assertEquals(featureFlags, featureFlagsList.get(0)); + assertEquals(".appconfig.featureflag/Alpha", featureFlagsList.get(0).getFeatureFlags().get(0).getKey()); + assertEquals(".appconfig.featureflag/Gamma", featureFlagsList.get(0).getFeatureFlags().get(1).getKey()); + assertEquals(3, featureFlagClient.getProperties().size()); + Map features = featureFlagClient.getProperties(); + assertTrue(features.get(".appconfig.featureflag/Alpha").isEnabled()); + assertTrue(features.get(".appconfig.featureflag/Beta").isEnabled()); + assertFalse(features.get(".appconfig.featureflag/Gamma").isEnabled()); + } + + @Test + public void loadFeatureFlagsTestTargetingFilter() { + FeatureFlagConfigurationSetting targetingFlag = new FeatureFlagConfigurationSetting("TargetingTest", false); + FeatureFlagFilter targetingFilter = new FeatureFlagFilter("Microsoft.Targeting"); + + LinkedHashMap parameters = new LinkedHashMap<>(); + + LinkedHashMap users = new LinkedHashMap<>(); + users.put("0", "Jeff"); + users.put("1", "Alicia"); + + LinkedHashMap groups = new LinkedHashMap<>(); + LinkedHashMap ring0 = new LinkedHashMap<>(); + LinkedHashMap ring1 = new LinkedHashMap<>(); + + ring0.put("name", "Ring0"); + ring0.put("rolloutPercentage", "100"); + + ring1.put("name", "Ring1"); + ring1.put("rolloutPercentage", "100"); + + groups.put("0", ring0); + groups.put("1", ring1); + + parameters.put(USERS, users); + parameters.put(GROUPS, groups); + parameters.put(DEFAULT_ROLLOUT_PERCENTAGE, 50); + + targetingFilter.addParameter("Audience", parameters); + targetingFlag.addClientFilter(targetingFilter); + List settings = List.of(targetingFlag); + FeatureFlags featureFlags = new FeatureFlags(null, settings); + when(clientMock.listFeatureFlags(Mockito.any())).thenReturn(featureFlags); + + List featureFlagsList = featureFlagClient.loadFeatureFlags(clientMock, null, emptyLabelList); + assertEquals(1, featureFlagsList.size()); + assertEquals(featureFlags, featureFlagsList.get(0)); + assertEquals(".appconfig.featureflag/TargetingTest", featureFlagsList.get(0).getFeatureFlags().get(0).getKey()); + assertEquals(1, featureFlagClient.getProperties().size()); + } + + @Test + public void testAndRequirementType() { + Feature feature = FeatureFlagClient.createFeature(ALL_FEATURE, TEST_ENDPOINT); + assertEquals("All", feature.getConditions().getRequirementType()); + } + + @Test + public void testFeatureFlagTelemetry() { + Feature feature = FeatureFlagClient.createFeature(TELEMETRY_FEATURE, TEST_ENDPOINT); + + String featureFlagId = "yON6V7DTGfVgOKfnPtue_2hS-CFVV5ecv-dcjqCFQt4"; + String featureFlagReference = String.format("%s/kv/%s", TEST_ENDPOINT, ".appconfig.featureflag/Delta"); + + assertEquals(featureFlagId, feature.getTelemetry().getMetadata().get(FEATURE_FLAG_ID)); + assertEquals(featureFlagReference, feature.getTelemetry().getMetadata().get(FEATURE_FLAG_REFERENCE)); + assertEquals(TEST_E_TAG, feature.getTelemetry().getMetadata().get(E_TAG)); + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolderTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolderTest.java index be46b724ba49..184a33374bb7 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolderTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/StateHolderTest.java @@ -13,26 +13,38 @@ import java.util.ArrayList; import java.util.List; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.MockitoSession; +import org.mockito.quality.Strictness; import com.azure.data.appconfiguration.models.ConfigurationSetting; public class StateHolderTest { private final List watchKeys = new ArrayList<>(); + + private MockitoSession session; @BeforeEach public void setup() { + session = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking(); MockitoAnnotations.openMocks(this); ConfigurationSetting watchKey = new ConfigurationSetting().setKey("sentinel").setValue("0").setETag("current"); watchKeys.add(watchKey); } + + @AfterEach + public void cleanup() throws Exception { + MockitoAnnotations.openMocks(this).close(); + session.finishMocking(); + } /** * Because of static code these need to run all at once. @@ -169,10 +181,8 @@ private void loadStateTest(TestInfo testInfo) { String endpoint = testInfo.getDisplayName() + "updateRefreshTimeBackoffCalc" + ".azconfig.io"; StateHolder testStateHolder = new StateHolder(); testStateHolder.setLoadState(endpoint, true, false); - testStateHolder.setLoadStateFeatureFlag(endpoint, true, false); StateHolder.updateState(testStateHolder); assertEquals(testStateHolder.getLoadState().get(endpoint), StateHolder.getLoadState(endpoint)); - assertTrue(StateHolder.getLoadStateFeatureFlag(endpoint)); assertEquals(testStateHolder, StateHolder.getCurrentState()); } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestConstants.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestConstants.java index 3b47802c84b3..63903d1ef5ec 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestConstants.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestConstants.java @@ -9,52 +9,91 @@ public final class TestConstants { // Store specific configuration public static final String TEST_STORE_NAME = "store1"; + public static final String CONN_STRING_PROP = "spring.cloud.azure.appconfiguration.stores[0].connection-string"; - public static final String CONN_STRING_PROP_NEW = - "spring.cloud.azure.appconfiguration.stores[1].connection-string"; + + public static final String CONN_STRING_PROP_NEW = "spring.cloud.azure.appconfiguration.stores[1].connection-string"; + public static final String STORE_ENDPOINT_PROP = "spring.cloud.azure.appconfiguration.stores[0].endpoint"; + public static final String KEY_PROP = "spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter"; + public static final String LABEL_PROP = "spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter"; + public static final String REFRESH_INTERVAL_PROP = "spring.cloud.azure.appconfiguration.refresh-interval"; + public static final String FAIL_FAST_PROP = "spring.cloud.azure.appconfiguration.failFast"; - public static final String TEST_CONN_STRING = - "Endpoint=https://fake.test.config.io;Id=fake-conn-id;Secret=ZmFrZS1jb25uLXNlY3JldA=="; - public static final String TEST_CONN_STRING_2 = - "Endpoint=https://fake2.test.config.io;Id=fake-conn-id;Secret=ZmFrZS1jb25uLXNlY3JldA=="; - public static final String TEST_CONN_STRING_GEO = - "Endpoint=https://fake.test.geo.config.io;Id=fake-conn-id;Secret=ZmFrZS1jb25uLXNlY3JldA=="; + + public static final String TEST_CONN_STRING = "Endpoint=https://fake.test.config.io;Id=fake-conn-id;Secret=ZmFrZS1jb25uLXNlY3JldA=="; + + public static final String TEST_CONN_STRING_2 = "Endpoint=https://fake2.test.config.io;Id=fake-conn-id;Secret=ZmFrZS1jb25uLXNlY3JldA=="; + + public static final String TEST_CONN_STRING_GEO = "Endpoint=https://fake.test.geo.config.io;Id=fake-conn-id;Secret=ZmFrZS1jb25uLXNlY3JldA=="; + public static final String TEST_ENDPOINT = "https://fake.test.config.io"; + public static final String TEST_ENDPOINT_GEO = "https://fake.test.geo.config.io"; + // from // fake-conn-secret public static final String TEST_KEY_1 = "test_key_1"; + public static final String TEST_VALUE_1 = "test_value_1"; + public static final String TEST_LABEL_1 = "test_label_1"; + public static final String TEST_KEY_2 = "test_key_2"; + public static final String TEST_VALUE_2 = "test_value_2"; + public static final String TEST_LABEL_2 = "test_label_2"; + public static final String TEST_KEY_3 = "test_key_3"; + public static final String TEST_VALUE_3 = "test_value_3"; + public static final String TEST_LABEL_3 = "test_label_3"; + public static final String TEST_KEY_VAULT_1 = "test_key_vault_1"; + public static final String TEST_URI_VAULT_1 = "https://test.key.vault.com/my_secret_url"; + + public static final String TEST_URI_VAULT_2 = "not a valid uri"; + public static final String TEST_LABEL_VAULT_1 = "test_label_vault_1"; + public static final String FEATURE_VALUE = "{\"id\":\"Alpha\",\"description\":\"\",\"enabled\":true," + "\"conditions\":{\"client_filters\":[{\"Name\":\"TestFilter\"}]}}"; + public static final String FEATURE_BOOLEAN_VALUE = "{\"id\":\"Beta\",\"description\":\"\",\"enabled\":true," + "\"conditions\":{\"client_filters\":[]}}"; + public static final String FEATURE_VALUE_PARAMETERS = "{\"id\":\"Alpha\",\"description\":\"\",\"enabled\":true," + "\"conditions\":{\"client_filters\":[{\"Name\":\"TestFilter\",\"Parameters\":{\"key\":\"value\"}}]}}"; + public static final String FEATURE_VALUE_TARGETING = "{\"id\":\"target\",\"description\":\"\",\"enabled\":true," + "\"conditions\":{\"client_filters\":[{\"Name\":\"targetingFilter\",\"Parameters\":{\"Users\":[\"Jeff\"," + "\"Alicia\"],\"Groups\":[{\"name\":\"Ring0\",\"rolloutPercentage\":100},{\"name\":\"Ring1\"," + "\"rolloutPercentage\":100}],\"DefaultRolloutPercentage\":50}}]}}]}}"; + + public static final String FEATURE_VALUE_TELEMETRY = "{\"id\":\"Delta\",\"description\":\"\",\"enabled\":true," + + "\"conditions\":{\"client_filters\":[{\"Name\":\"TestFilter\",\"Parameters\":{\"key\":\"value\"}}]}," + + "\"telemetry\":{\"enabled\":true,\"metadata\":{\"key\":\"value\"}}}"; + + public static final String FEATURE_VALUE_ALL = "{ \"id\": \"AndTest\", \"description\": \"\",\"enabled\": true,\"conditions\": {\"requirement_type\": \"All\",\"client_filters\": [{\"Name\": \"percentageFilter\",\"Parameters\": {\"Value\": 50}},{\"Name\": \"percentageFilter\",\"Parameters\": {\"Value\": 50}}]}}"; + public static final String FEATURE_LABEL = ""; + public static final String TEST_SLASH_KEY = "slash/key"; + public static final String TEST_SLASH_VALUE = "prop value for slashed key name"; + public static final String TEST_STORE_NAME_1 = "fake-config-store-1"; + public static final String TEST_STORE_NAME_2 = "fake-config-store-2"; + public static final String TEST_E_TAG = "4f6dd610dd5e4deebc7fbaef685fb903"; + private TestConstants() { } } diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestUtils.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestUtils.java index e9fe610f0e4c..78b9bd6bd6ba 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestUtils.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/TestUtils.java @@ -48,12 +48,19 @@ static ConfigurationSetting createItem(String keyFilter, String key, String valu } static FeatureFlagConfigurationSetting createItemFeatureFlag(String prefix, String key, String value, String label, - String contentType) { + String contentType) { + return createItemFeatureFlag(prefix, key, value, label, contentType, null); + } + + static FeatureFlagConfigurationSetting createItemFeatureFlag(String prefix, String key, String value, String label, + String contentType, String eTag) { FeatureFlagConfigurationSetting item = new FeatureFlagConfigurationSetting(key, true); + item.setValue(value); item.setClientFilters(new ArrayList<>()); item.setKey(prefix + key); item.setLabel(label); item.setContentType(contentType); + item.setETag(eTag); try { JsonNode node = MAPPER.readTree(value).get("conditions").get("client_filters"); @@ -95,7 +102,7 @@ static SecretReferenceConfigurationSetting createSecretReference(String keyFilte static void addStore(AppConfigurationProperties properties, String storeEndpoint, String connectionString, String keyFilter) { - addStore(properties, storeEndpoint, connectionString, keyFilter, "\0"); + addStore(properties, storeEndpoint, connectionString, keyFilter, null); } static void addStore(AppConfigurationProperties properties, String storeEndpoint, String connectionString, diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/ReplicaLookUpTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/ReplicaLookUpTest.java new file mode 100644 index 000000000000..82c8642de5a7 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/ReplicaLookUpTest.java @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.autofailover; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +import java.util.List; + +import javax.naming.NameNotFoundException; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.Attributes; +import javax.naming.directory.InitialDirContext; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +import com.azure.spring.cloud.appconfiguration.config.implementation.properties.AppConfigurationProperties; +import com.azure.spring.cloud.appconfiguration.config.implementation.properties.ConfigStore; + +public class ReplicaLookUpTest { + + private ReplicaLookUp replicaLookUp; + + private AppConfigurationProperties properties; + + @Mock + private InitialDirContext contextMock; + + @Mock + private Attributes srvOriginMock; + + @Mock + private Attributes srvReplicaMock; + + @Mock + private Attribute srvAttrOriginMock; + + @Mock + private Attribute srvAttrReplicaMock; + + @Mock + private NamingEnumeration namingOriginMock; + + @Mock + private NamingEnumeration namingReplicaMock; + + private ConfigStore configStore; + + @BeforeEach + public void init() { + MockitoAnnotations.openMocks(this); + + properties = new AppConfigurationProperties(); + configStore = new ConfigStore(); + configStore.setEndpoint("https://fake.endpoint.azconfig.test"); + } + + @Test + public void updateAutoFailoverEndpointsUnconfiguredTest() throws NamingException { + properties.setStores(List.of()); + replicaLookUp = new ReplicaLookUp(properties); + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("test.endpoint.azconfig.test").size()); + replicaLookUp.context = contextMock; + + replicaLookUp.updateAutoFailoverEndpoints(); + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("test.endpoint.azconfig.test").size()); + } + + @Test + public void updateAutoFailoverEndpointsNoReplicasTest() throws NamingException { + when(contextMock.getAttributes(Mockito.anyString(), Mockito.any())).thenReturn(srvOriginMock) + .thenThrow(new NameNotFoundException()); + when(srvOriginMock.get(Mockito.anyString())).thenReturn(srvAttrOriginMock); + Mockito.doReturn(namingOriginMock).when(srvAttrOriginMock).getAll(); + when(namingOriginMock.hasMore()).thenReturn(true).thenReturn(false); + Mockito.doReturn("1 1 1 fake.endpoint.azconfig.test.").when(namingOriginMock).next(); + + ConfigStore configStore = new ConfigStore(); + configStore.setEndpoint("https://fake.endpoint.azconfig.test"); + properties.setStores(List.of(configStore)); + replicaLookUp = new ReplicaLookUp(properties); + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + replicaLookUp.context = contextMock; + + replicaLookUp.updateAutoFailoverEndpoints(); + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + } + + @Test + public void updateAutoFailoverEndpointsAReplicasTest() throws NamingException { + setupMock(); + when(namingReplicaMock.hasMore()).thenReturn(true).thenReturn(false); + Mockito.doReturn("1 1 1 fake.endpoint.replica.azconfig.test.").when(namingReplicaMock).next(); + + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + + replicaLookUp.updateAutoFailoverEndpoints(); + assertEquals(1, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + } + + @Test + public void updateAutoFailoverEndpointsMuplipleReplicasTest() throws NamingException { + setupMock(); + when(namingReplicaMock.hasMore()).thenReturn(true).thenReturn(true).thenReturn(false); + Mockito.doReturn("1 1 1 fake.endpoint.replica.azconfig.test.") + .doReturn("1 1 1 fake.endpoint.replica2.azconfig.test.").when(namingReplicaMock).next(); + + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + + replicaLookUp.updateAutoFailoverEndpoints(); + assertEquals(2, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + } + + @Test + public void updateAutoFailoverEndpointsConnectionStringTest() throws NamingException { + configStore.setConnectionStrings(List.of("Endpoint=https://fake.endpoint.azconfig.test;Id=0;Secret=0=")); + setupMock(); + when(namingReplicaMock.hasMore()).thenReturn(true).thenReturn(false); + Mockito.doReturn("1 1 1 fake.endpoint.replica.azconfig.test.").when(namingReplicaMock).next(); + + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + + replicaLookUp.updateAutoFailoverEndpoints(); + assertEquals(1, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + } + + @Test + public void updateAutoFailoverEndpointsInvalidReplicaTest() throws NamingException { + setupMock(); + when(namingReplicaMock.hasMore()).thenReturn(true).thenReturn(false); + Mockito.doReturn("1 1 1 fake.endpoint.replica.invalid.test.").when(namingReplicaMock).next(); + + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + + replicaLookUp.updateAutoFailoverEndpoints(); + assertEquals(0, replicaLookUp.getAutoFailoverEndpoints("https://fake.endpoint.azconfig.test").size()); + } + + private void setupMock() throws NamingException { + when(contextMock.getAttributes(Mockito.anyString(), Mockito.any())).thenReturn(srvOriginMock) + .thenReturn(srvReplicaMock).thenThrow(new NameNotFoundException()); + when(srvOriginMock.get(Mockito.anyString())).thenReturn(srvAttrOriginMock); + Mockito.doReturn(namingOriginMock).when(srvAttrOriginMock).getAll(); + when(namingOriginMock.hasMore()).thenReturn(true).thenReturn(false); + Mockito.doReturn("1 1 1 fake.endpoint.").when(namingOriginMock).next(); + + when(srvReplicaMock.get(Mockito.anyString())).thenReturn(srvAttrReplicaMock); + Mockito.doReturn(namingReplicaMock).when(srvAttrReplicaMock).getAll(); + + properties.setStores(List.of(configStore)); + replicaLookUp = new ReplicaLookUp(properties); + + replicaLookUp.context = contextMock; + } +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/SRVRecordTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/SRVRecordTest.java new file mode 100644 index 000000000000..7c3401d6b7c9 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/autofailover/SRVRecordTest.java @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.appconfiguration.config.implementation.autofailover; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class SRVRecordTest { + + @Test + public void createSRVRecord() { + String[] record = {"1", "2", "3", "fake-uri."}; + SRVRecord srvRecord = new SRVRecord(record); + assertEquals(1, srvRecord.getPriority()); + assertEquals(2, srvRecord.getWeight()); + assertEquals(3, srvRecord.getPort()); + assertEquals("fake-uri", srvRecord.getTarget()); + assertEquals("https://fake-uri", srvRecord.getEndpoint()); + } + + @Test + public void compareTest() { + String[] p1Record = {"1", "1", "1", "p1."}; + SRVRecord p1 = new SRVRecord(p1Record); + String[] p2Record = {"2", "2", "2", "p1."}; + SRVRecord p2 = new SRVRecord(p2Record); + assertEquals(-1, p1.compareTo(p2)); + assertEquals(1, p2.compareTo(p1)); + + String[] p1w2Record = {"1", "2", "1", "p1."}; + SRVRecord p1w2 = new SRVRecord(p1w2Record); + assertEquals(-1, p1.compareTo(p1w2)); + assertEquals(1, p1w2.compareTo(p1)); + + assertEquals(0, p1.compareTo(p1)); + } + +} diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfigurationTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfigurationTest.java index 4a3ade367448..93202173f069 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/config/AppConfigurationBootstrapConfigurationTest.java @@ -16,7 +16,7 @@ import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationPropertySourceLocator; import com.azure.spring.cloud.appconfiguration.config.implementation.AppConfigurationReplicaClientFactory; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; public class AppConfigurationBootstrapConfigurationTest { diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationPropertiesTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationPropertiesTest.java index b4ab7e6b364a..e8d839e22faa 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationPropertiesTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/properties/AppConfigurationPropertiesTest.java @@ -30,7 +30,7 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import com.azure.spring.cloud.appconfiguration.config.implementation.config.AppConfigurationBootstrapConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; public class AppConfigurationPropertiesTest { diff --git a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/stores/ConfigStoreTest.java b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/stores/ConfigStoreTest.java index c1be6025ed69..f2407defceb1 100644 --- a/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/stores/ConfigStoreTest.java +++ b/sdk/spring/spring-cloud-azure-appconfiguration-config/src/test/java/com/azure/spring/cloud/appconfiguration/config/implementation/stores/ConfigStoreTest.java @@ -21,8 +21,8 @@ public class ConfigStoreTest { @Test public void invalidLabel() { ConfigStore configStore = new ConfigStore(); - AppConfigurationKeyValueSelector selectedKeys = new AppConfigurationKeyValueSelector().setKeyFilter("/application/") - .setLabelFilter("*"); + AppConfigurationKeyValueSelector selectedKeys = + new AppConfigurationKeyValueSelector().setKeyFilter("/application/").setLabelFilter("*"); List selects = new ArrayList<>(); selects.add(selectedKeys); configStore.setSelects(selects); @@ -33,7 +33,8 @@ public void invalidLabel() { @Test public void invalidKey() { ConfigStore configStore = new ConfigStore(); - AppConfigurationKeyValueSelector selectedKeys = new AppConfigurationKeyValueSelector().setKeyFilter("/application/*"); + AppConfigurationKeyValueSelector selectedKeys = + new AppConfigurationKeyValueSelector().setKeyFilter("/application/*"); List selects = new ArrayList<>(); selects.add(selectedKeys); configStore.setSelects(selects); @@ -57,8 +58,8 @@ public void getLabelsTest() { assertEquals("\0", configStore.getSelects().get(0).getLabelFilter(new ArrayList<>())[0]); - AppConfigurationKeyValueSelector selectedKeys = new AppConfigurationKeyValueSelector().setKeyFilter("/application/") - .setLabelFilter("dev"); + AppConfigurationKeyValueSelector selectedKeys = + new AppConfigurationKeyValueSelector().setKeyFilter("/application/").setLabelFilter("dev"); List selects = new ArrayList<>(); selects.add(selectedKeys); configStore.setSelects(selects); @@ -77,7 +78,7 @@ public void getLabelsTest() { configStore.setSelects(selects); assertEquals("\0", configStore.getSelects().get(0).getLabelFilter(new ArrayList<>())[0]); } - + @Test public void testContainsEndpoint() { ConfigStore store = new ConfigStore(); @@ -85,7 +86,7 @@ public void testContainsEndpoint() { store.validateAndInit(); assertTrue(store.containsEndpoint("endpoint")); assertFalse(store.containsEndpoint("invalidEndpoint")); - + store = new ConfigStore(); List endpoints = new ArrayList<>(); endpoints.add("endpoint"); @@ -96,13 +97,13 @@ public void testContainsEndpoint() { assertTrue(store.containsEndpoint("secondEndpoint")); assertFalse(store.containsEndpoint("invalidEndpoint")); } - + @Test public void testValidateConnectionString() { ConfigStore store = new ConfigStore(); store.setConnectionString("Endpoint=https://endpoint.io;Id=identifier;Secret=secret="); store.validateAndInit(); - + store = new ConfigStore(); List connectionStrings = new ArrayList<>(); connectionStrings.add("Endpoint=https://endpoint.io;Id=identifier;Secret=secret="); @@ -110,7 +111,7 @@ public void testValidateConnectionString() { store.setConnectionStrings(connectionStrings); store.validateAndInit(); } - + @Test public void testValidateConnectionStringInvalid() { ConfigStore store = new ConfigStore(); @@ -119,5 +120,4 @@ public void testValidateConnectionStringInvalid() { store.setConnectionStrings(connectionStrings); assertThrows(IllegalStateException.class, () -> store.validateAndInit()); } - } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md b/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md index 87056a4f02ff..3485bcbccd9d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,10 +99,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. @@ -66,14 +123,30 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml b/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml index 52bc3bfbfccc..c168c0316d71 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml +++ b/sdk/spring/spring-cloud-azure-autoconfigure/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-autoconfigure - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure AutoConfigure Spring Cloud Azure AutoConfigure @@ -32,25 +32,21 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-cloud-azure-service - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-resourcemanager - 4.20.0-beta.1 - true - - - - com.azure.spring - spring-cloud-azure-trace-sleuth - 4.20.0-beta.1 + 5.14.0-beta.1 true @@ -59,7 +55,7 @@ com.azure.spring spring-integration-azure-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 true @@ -73,7 +69,7 @@ com.azure.spring spring-integration-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 true @@ -81,7 +77,7 @@ com.azure.spring spring-integration-azure-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 true @@ -89,21 +85,33 @@ org.springframework.kafka spring-kafka - 2.9.11 + 3.2.0 true org.springframework.cloud spring-cloud-starter-stream-kafka - 3.2.10 + 4.1.1 true + + io.lettuce + lettuce-core + 6.3.2.RELEASE + true + org.springframework.data spring-data-redis - 2.7.18 + 3.3.0 + true + + + org.springframework + spring-tx + 6.1.8 true @@ -111,7 +119,7 @@ com.azure azure-spring-data-cosmos - 3.47.0-beta.1 + 5.14.0-beta.1 true @@ -119,29 +127,19 @@ org.springframework spring-jms - 5.3.32 + 6.1.8 true - com.microsoft.azure - azure-servicebus-jms - 1.0.0 + org.apache.qpid + qpid-jms-client + 2.0.0 true - - - com.azure - azure-core - - - com.azure - azure-identity - - org.messaginghub pooled-jms - 1.2.6 + 3.1.6 true @@ -153,18 +151,48 @@ azure-core 1.49.1 true + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + com.azure azure-identity 1.13.0 true + + + com.fasterxml.jackson.core + jackson-databind + + com.azure azure-cosmos 4.62.0 true + + + com.fasterxml.jackson.module + jackson-module-afterburner + + com.azure @@ -177,6 +205,12 @@ azure-messaging-servicebus 7.17.0 true + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + com.azure @@ -207,43 +241,61 @@ azure-storage-blob 12.26.1 true + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + com.azure azure-storage-file-share 12.22.1 true + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + com.azure azure-storage-queue 12.21.1 true + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + org.springframework.boot spring-boot-autoconfigure - 2.7.18 + 3.3.0 org.springframework spring-context-support - 5.3.32 + 6.1.8 true org.springframework.boot spring-boot-actuator-autoconfigure - 2.7.18 + 3.3.0 true org.springframework.boot spring-boot-configuration-processor - 2.7.18 + 3.3.0 true @@ -251,25 +303,25 @@ org.springframework.security spring-security-oauth2-client - 5.7.11 + 6.3.0 true org.springframework.security spring-security-oauth2-resource-server - 5.7.11 + 6.3.0 true org.springframework.security spring-security-oauth2-jose - 5.7.11 + 6.3.0 true org.springframework.security spring-security-config - 5.7.11 + 6.3.0 true @@ -283,22 +335,22 @@ provided - javax.servlet - javax.servlet-api - 4.0.1 + jakarta.servlet + jakarta.servlet-api + 6.0.0 true org.hibernate.validator hibernate-validator - 6.2.5.Final + 8.0.1.Final true jakarta.validation jakarta.validation-api - 2.0.2 + 3.0.2 @@ -308,103 +360,104 @@ true - + - org.springframework.boot - spring-boot-starter-test - 2.7.18 - test + com.fasterxml.jackson.core + jackson-databind + 2.17.1 + true - org.mockito - mockito-core - 4.11.0 - test + com.fasterxml.jackson.core + jackson-core + 2.17.1 + true - - - net.bytebuddy - byte-buddy - 1.14.12 - test + com.fasterxml.jackson.core + jackson-annotations + 2.17.1 + true - net.bytebuddy - byte-buddy-agent - 1.14.12 - test + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.17.1 + true + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.17.1 + true + + + com.fasterxml.jackson.module + jackson-module-afterburner + 2.17.1 + true + + + org.springframework.boot - spring-boot-configuration-metadata - 2.7.18 + spring-boot-starter-test + 3.3.0 test - org.glassfish - jakarta.el - 3.0.4 + org.springframework + spring-core-test + 6.1.8 test - - - org.apache.httpcomponents - httpclient - 4.5.14 + org.springframework.boot + spring-boot-configuration-metadata + 3.3.0 test + - org.springframework.cloud - spring-cloud-starter-sleuth - 3.1.10 + org.mockito + mockito-core + 5.11.0 test - - + + - redis.clients - jedis - 3.8.0 - true + net.bytebuddy + byte-buddy + 1.14.16 + test + + + net.bytebuddy + byte-buddy-agent + 1.14.16 + test - com.mysql mysql-connector-j - 8.0.33 + 8.3.0 test org.postgresql postgresql - 42.3.9 + 42.7.3 test org.springframework spring-jdbc - 5.3.32 - test - - - - - org.testcontainers - testcontainers - 1.17.6 - test - - - - org.testcontainers - junit-jupiter - 1.17.6 + 6.1.8 test @@ -412,6 +465,81 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + annotation-process + + compile + + + + -proc:only + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -420,27 +548,35 @@ - com.microsoft.azure:azure-servicebus-jms:[1.0.0] - org.messaginghub:pooled-jms:[1.2.6] - jakarta.validation:jakarta.validation-api:[2.0.2] - javax.servlet:javax.servlet-api:[4.0.1] - org.hibernate.validator:hibernate-validator:[6.2.5.Final] - org.springframework.boot:spring-boot-actuator-autoconfigure:[2.7.18] - org.springframework.boot:spring-boot-autoconfigure-processor:[2.7.18] - org.springframework.boot:spring-boot-autoconfigure:[2.7.18] - org.springframework.boot:spring-boot-configuration-processor:[2.7.18] - org.springframework.data:spring-data-mongodb:[3.4.18] - org.springframework.data:spring-data-redis:[2.7.18] - org.springframework.kafka:spring-kafka:[2.9.11] - org.springframework.cloud:spring-cloud-starter-stream-kafka:[3.2.10] - org.springframework:spring-context-support:[5.3.32] - org.springframework.security:spring-security-oauth2-client:[5.7.11] - org.springframework.security:spring-security-oauth2-resource-server:[5.7.11] - org.springframework.security:spring-security-oauth2-jose:[5.7.11] - org.springframework.security:spring-security-config:[5.7.11] - org.springframework:spring-jms:[5.3.32] - org.springframework:spring-jdbc:[5.3.32] - redis.clients:jedis:[3.8.0] + com.mysql:mysql-connector-j:[8.3.0] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.core:jackson-core:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.17.1] + com.fasterxml.jackson.module:jackson-module-afterburner:[2.17.1] + io.lettuce:lettuce-core:[6.3.2.RELEASE] + jakarta.servlet:jakarta.servlet-api:[6.0.0] + jakarta.validation:jakarta.validation-api:[3.0.2] + org.apache.qpid:qpid-jms-client:[2.0.0] + org.hibernate.validator:hibernate-validator:[8.0.1.Final] + org.messaginghub:pooled-jms:[3.1.6] + org.postgresql:postgresql:[42.7.3] + org.springframework.boot:spring-boot-actuator-autoconfigure:[3.3.0] + org.springframework.boot:spring-boot-autoconfigure-processor:[3.3.0] + org.springframework.boot:spring-boot-autoconfigure:[3.3.0] + org.springframework.boot:spring-boot-configuration-processor:[3.3.0] + org.springframework.cloud:spring-cloud-starter-stream-kafka:[4.1.1] + org.springframework.data:spring-data-redis:[3.3.0] + org.springframework.kafka:spring-kafka:[3.2.0] + org.springframework.security:spring-security-config:[6.3.0] + org.springframework.security:spring-security-oauth2-client:[6.3.0] + org.springframework.security:spring-security-oauth2-jose:[6.3.0] + org.springframework.security:spring-security-oauth2-resource-server:[6.3.0] + org.springframework:spring-context-support:[6.1.8] + org.springframework:spring-jdbc:[6.1.8] + org.springframework:spring-jms:[6.1.8] + org.springframework:spring-tx:[6.1.8] @@ -449,7 +585,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -459,66 +595,5 @@ - - - - - annotation-process-for-java-8 - - [1.8,9) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - annotation-process-for-java-8 - - compile - - - - -proc:only - - - - - - - - - - annotation-process-for-java-11 - - [11,) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - annotation-process-for-java-11 - - compile - - - - -proc:only - - 11 - - - - - - - - diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadJwtBearerTokenAuthenticationConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadJwtBearerTokenAuthenticationConverter.java deleted file mode 100644 index e95ed67e8903..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadJwtBearerTokenAuthenticationConverter.java +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; - -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AuthorityPrefix; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.AadJwtGrantedAuthoritiesConverter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AadOAuth2AuthenticatedPrincipal; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties; -import org.springframework.core.convert.converter.Converter; -import org.springframework.security.authentication.AbstractAuthenticationToken; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.oauth2.core.OAuth2AccessToken; -import org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal; -import org.springframework.security.oauth2.jwt.Jwt; -import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthentication; -import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter; -import org.springframework.util.Assert; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - - -/** - * A {@link Converter} that takes a {@link Jwt} and converts it into a {@link BearerTokenAuthentication}. - * - * @deprecated use the default converter {@link JwtAuthenticationConverter} instead in {@link AadResourceServerWebSecurityConfigurerAdapter}. - */ -@Deprecated -public class AadJwtBearerTokenAuthenticationConverter implements Converter { - - private final Converter> jwtGrantedAuthoritiesConverter; - private final String principalClaimName; - - /** - * Construct AADJwtBearerTokenAuthenticationConverter by AADTokenClaim.SUB and - * DEFAULT_CLAIM_TO_AUTHORITY_PREFIX_MAP. - */ - public AadJwtBearerTokenAuthenticationConverter() { - this(AadJwtClaimNames.SUB, AadResourceServerProperties.DEFAULT_CLAIM_TO_AUTHORITY_PREFIX_MAP); - } - - /** - * Construct AADJwtBearerTokenAuthenticationConverter with the authority claim. - * - * @param authoritiesClaimName authority claim name - */ - public AadJwtBearerTokenAuthenticationConverter(String authoritiesClaimName) { - this(authoritiesClaimName, AuthorityPrefix.SCOPE); - } - - /** - * Construct AADJwtBearerTokenAuthenticationConverter with the authority claim name and prefix. - * - * @param authoritiesClaimName authority claim name - * @param authorityPrefix the prefix name of the authority - */ - public AadJwtBearerTokenAuthenticationConverter(String authoritiesClaimName, - String authorityPrefix) { - this(AadJwtClaimNames.SUB, buildClaimToAuthorityPrefixMap(authoritiesClaimName, authorityPrefix)); - } - - /** - * Using spring security provides JwtGrantedAuthoritiesConverter, it can resolve the access token of scp or roles. - * - * @param principalClaimName the claim name for the principal - * @param claimToAuthorityPrefixMap the authority name and prefix map - */ - public AadJwtBearerTokenAuthenticationConverter(String principalClaimName, - Map claimToAuthorityPrefixMap) { - Assert.notNull(claimToAuthorityPrefixMap, "claimToAuthorityPrefixMap cannot be null"); - this.principalClaimName = principalClaimName; - this.jwtGrantedAuthoritiesConverter = new AadJwtGrantedAuthoritiesConverter(claimToAuthorityPrefixMap); - } - - /** - * Using the custom JwtGrantedAuthoritiesConverter. - * - * @param jwtGrantedAuthoritiesConverter the custom granted authority converter - */ - public AadJwtBearerTokenAuthenticationConverter(Converter> jwtGrantedAuthoritiesConverter) { - this(AadJwtClaimNames.SUB, jwtGrantedAuthoritiesConverter); - } - - /** - * Using the principal claim name and the custom JwtGrantedAuthoritiesConverter. - * - * @param principalClaimName the claim name for the principal - * @param jwtGrantedAuthoritiesConverter the custom granted authority converter - */ - public AadJwtBearerTokenAuthenticationConverter(String principalClaimName, - Converter> jwtGrantedAuthoritiesConverter) { - Assert.notNull(jwtGrantedAuthoritiesConverter, "jwtGrantedAuthoritiesConverter cannot be null"); - this.principalClaimName = principalClaimName; - this.jwtGrantedAuthoritiesConverter = jwtGrantedAuthoritiesConverter; - } - - /** - * Convert the source object of type {@code Jwt} to target type {@code AbstractAuthenticationToken}. - * - * @param jwt the source object to convert, which must be an instance of {@code Jwt} (never {@code null}) - * @return the converted object - */ - @Override - public AbstractAuthenticationToken convert(Jwt jwt) { - OAuth2AccessToken accessToken = new OAuth2AccessToken( - OAuth2AccessToken.TokenType.BEARER, jwt.getTokenValue(), jwt.getIssuedAt(), jwt.getExpiresAt()); - Map claims = jwt.getClaims(); - Collection authorities = jwtGrantedAuthoritiesConverter.convert(jwt); - OAuth2AuthenticatedPrincipal principal = new AadOAuth2AuthenticatedPrincipal( - jwt.getHeaders(), claims, authorities, jwt.getTokenValue(), (String) claims.get(principalClaimName)); - return new BearerTokenAuthentication(principal, accessToken, authorities); - } - - private static Map buildClaimToAuthorityPrefixMap(String authoritiesClaimName, - String authorityPrefix) { - Assert.notNull(authoritiesClaimName, "authoritiesClaimName cannot be null"); - Assert.notNull(authorityPrefix, "authorityPrefix cannot be null"); - Map claimToAuthorityPrefixMap = new HashMap<>(); - claimToAuthorityPrefixMap.put(authoritiesClaimName, authorityPrefix); - return claimToAuthorityPrefixMap; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadResourceServerWebSecurityConfigurerAdapter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadResourceServerWebSecurityConfigurerAdapter.java deleted file mode 100644 index fb67cd6afedf..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadResourceServerWebSecurityConfigurerAdapter.java +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.aad; - -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.AadJwtGrantedAuthoritiesConverter; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.convert.converter.Converter; -import org.springframework.security.authentication.AbstractAuthenticationToken; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.oauth2.jwt.Jwt; -import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter; -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; - -import java.util.Collection; - -/** - * Abstract configuration class, used to make JwtConfigurer and AADJwtBearerTokenAuthenticationConverter take effect. - * - * @see WebSecurityConfigurerAdapter - */ -public abstract class AadResourceServerWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { - - @Autowired - private AadResourceServerProperties properties; - - private Converter> jwtGrantedAuthoritiesConverter; - - /** - * Creates a new instance with the default configuration. - */ - public AadResourceServerWebSecurityConfigurerAdapter() { - } - - /** - * Sets the Azure AD properties and custom granted authority converter to creates a new instance, - * the custom granted authority converter can be null. - * - * @param properties the Azure AD properties for Resource Server - * @param jwtGrantedAuthoritiesConverter the custom converter for JWT granted authority - */ - public AadResourceServerWebSecurityConfigurerAdapter(AadResourceServerProperties properties, - Converter> jwtGrantedAuthoritiesConverter) { - Assert.notNull(jwtGrantedAuthoritiesConverter, "jwtGrantedAuthoritiesConverter cannot be null"); - this.properties = properties; - this.jwtGrantedAuthoritiesConverter = jwtGrantedAuthoritiesConverter; - } - - /** - * Apply the {@link OAuth2ResourceServerConfigurer} for Azure AD OAuth2 Resource Server scenario. - * - * @param http the {@link HttpSecurity} to use - * @throws Exception Configuration failed - * - */ - @Override - protected void configure(HttpSecurity http) throws Exception { - // @formatter:off - http.oauth2ResourceServer() - .jwt() - .jwtAuthenticationConverter(jwtAuthenticationConverter()); - // @formatter:off - } - - private Converter jwtAuthenticationConverter() { - JwtAuthenticationConverter converter = new JwtAuthenticationConverter(); - if (StringUtils.hasText(properties.getPrincipalClaimName())) { - converter.setPrincipalClaimName(properties.getPrincipalClaimName()); - } - - this.jwtGrantedAuthoritiesConverter = jwtGrantedAuthoritiesConverter(); - if (this.jwtGrantedAuthoritiesConverter != null) { - converter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter); - } else { - converter.setJwtGrantedAuthoritiesConverter( - new AadJwtGrantedAuthoritiesConverter(properties.getClaimToAuthorityPrefixMap())); - } - return converter; - } - - /** - * Customize the Jwt granted authority converter, and return the {@link AadResourceServerWebSecurityConfigurerAdapter#jwtGrantedAuthoritiesConverter} by default. - * @return the Jwt granted authority converter. - */ - protected Converter> jwtGrantedAuthoritiesConverter() { - return this.jwtGrantedAuthoritiesConverter; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadWebApplicationConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadWebApplicationConfiguration.java deleted file mode 100644 index f56bd4438355..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadWebApplicationConfiguration.java +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.aad.configuration; - -import com.azure.spring.cloud.autoconfigure.aad.AadWebSecurityConfigurerAdapter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.conditions.WebApplicationCondition; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapp.AadOAuth2UserService; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.security.ConditionalOnDefaultWebSecurity; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest; -import org.springframework.security.oauth2.client.userinfo.OAuth2UserService; -import org.springframework.security.oauth2.core.oidc.user.OidcUser; - -/** - * Configure the necessary beans used for Azure AD authentication and authorization. - */ -@Configuration(proxyBeanMethods = false) -@Conditional(WebApplicationCondition.class) -public class AadWebApplicationConfiguration { - - private final RestTemplateBuilder restTemplateBuilder; - - /** - * Creates a new instance of {@link AadWebApplicationConfiguration}. - * - * @param restTemplateBuilder the RestTemplateBuilder - * - */ - public AadWebApplicationConfiguration(RestTemplateBuilder restTemplateBuilder) { - this.restTemplateBuilder = restTemplateBuilder; - } - - /** - * Declare OAuth2UserService bean. - * - * @param properties the Azure AD authentication properties - * @return OAuth2UserService bean - */ - @Bean - @ConditionalOnMissingBean - public OAuth2UserService oidcUserService(AadAuthenticationProperties properties) { - return new AadOAuth2UserService(properties, restTemplateBuilder); - } - - /** - * Sample configuration to make AzureActiveDirectoryOAuth2UserService take effect. - */ - @EnableWebSecurity - @EnableGlobalMethodSecurity(prePostEnabled = true) - @ConditionalOnDefaultWebSecurity - @ConditionalOnExpression("!'${spring.cloud.azure.active-directory.application-type}'.equalsIgnoreCase('web_application_and_resource_server')") - public static class DefaultAadWebSecurityConfigurerAdapter extends AadWebSecurityConfigurerAdapter { - - /** - * configure - * - * @param http the {@link HttpSecurity} to use - * @throws Exception Configuration failed - */ - @Override - protected void configure(HttpSecurity http) throws Exception { - super.configure(http); - http.authorizeRequests() - .antMatchers("/login").permitAll() - .anyRequest().authenticated(); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/package-info.java deleted file mode 100644 index e9a6684508d7..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Configuration class for Active Directory. - */ -package com.azure.spring.cloud.autoconfigure.aad.configuration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2AuthenticatedPrincipal.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2AuthenticatedPrincipal.java deleted file mode 100644 index c17dc3284e29..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2AuthenticatedPrincipal.java +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; - -import com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter; -import com.nimbusds.jwt.JWTClaimsSet; -import com.nimbusds.jwt.JWTClaimsSet.Builder; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal; -import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter; -import org.springframework.util.Assert; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Map.Entry; - -import static org.springframework.security.core.authority.AuthorityUtils.NO_AUTHORITIES; - -/** - * Entity class of AADOAuth2AuthenticatedPrincipal - * - * @deprecated use the default converter {@link JwtAuthenticationConverter} instead in {@link AadResourceServerWebSecurityConfigurerAdapter}. - */ -@Deprecated -public class AadOAuth2AuthenticatedPrincipal implements OAuth2AuthenticatedPrincipal, Serializable { - - private static final long serialVersionUID = -3625690847771476854L; - - private static final String PERSONAL_ACCOUNT_TENANT_ID = "9188040d-6c67-4c5b-b112-36a304b66dad"; - - /** - * The authorities - */ - private final Collection authorities; - - /** - * The headers - */ - private final Map headers; - - /** - * The attributes - */ - private final Map attributes; - - /** - * The token value - */ - private final String tokenValue; - - /** - * The JWT claims set - */ - private JWTClaimsSet jwtClaimsSet; - - /** - * The name - */ - private final String name; - - /** - * Creates a new instance of {@link AadOAuth2AuthenticatedPrincipal}. - * - * @param headers the headers - * @param attributes the attributes - * @param authorities the authorities - * @param tokenValue the token value - * @param name the name - */ - public AadOAuth2AuthenticatedPrincipal(Map headers, - Map attributes, - Collection authorities, - String tokenValue, - String name) { - Assert.notEmpty(attributes, "attributes cannot be empty"); - Assert.notEmpty(headers, "headers cannot be empty"); - this.headers = headers; - this.tokenValue = tokenValue; - this.attributes = Collections.unmodifiableMap(attributes); - this.authorities = authorities == null ? NO_AUTHORITIES : Collections.unmodifiableCollection(authorities); - this.name = name; - toJwtClaimsSet(attributes); - } - - private void toJwtClaimsSet(Map attributes) { - Builder builder = new Builder(); - for (Entry entry : attributes.entrySet()) { - builder.claim(entry.getKey(), entry.getValue()); - } - this.jwtClaimsSet = builder.build(); - } - - @Override - public Map getAttributes() { - return attributes; - } - - @Override - public Collection getAuthorities() { - return authorities; - } - - @Override - public String getName() { - return this.name; - } - - /** - * Gets the token value. - * - * @return the token value - */ - public String getTokenValue() { - return tokenValue; - } - - /** - * Gets the headers. - * - * @return the headers - */ - public Map getHeaders() { - return headers; - } - - /** - * Gets the JWT claims set. - * - * @return the JWT claims set - */ - public JWTClaimsSet getJwtClaimsSet() { - return jwtClaimsSet; - } - - /** - * Gets the issuer. - * - * @return the issuer - */ - public String getIssuer() { - return jwtClaimsSet == null ? null : jwtClaimsSet.getIssuer(); - } - - /** - * Gets the subject. - * - * @return the subject - */ - public String getSubject() { - return jwtClaimsSet == null ? null : jwtClaimsSet.getSubject(); - } - - /** - * Gets the claims. - * - * @return the claims - */ - public Map getClaims() { - return jwtClaimsSet == null ? null : jwtClaimsSet.getClaims(); - } - - /** - * Gets a claim. - * - * @param name the name of the claim - * @return a claim - */ - public Object getClaim(String name) { - return jwtClaimsSet == null ? null : jwtClaimsSet.getClaim(name); - } - - /** - * Gets the tenant ID. - * - * @return the tenant ID - */ - public String getTenantId() { - return jwtClaimsSet == null ? null : (String) jwtClaimsSet.getClaim("tid"); - } - - /** - * Whether the principal is a personal account. - * - * @return whether the principal is a personal account - */ - public boolean isPersonalAccount() { - return PERSONAL_ACCOUNT_TENANT_ID.equals(getTenantId()); - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadOboOAuth2AuthorizedClientProvider.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadOboOAuth2AuthorizedClientProvider.java deleted file mode 100644 index 9a28e5cf27ac..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadOboOAuth2AuthorizedClientProvider.java +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi; - -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants; -import com.microsoft.aad.msal4j.ClientCredentialFactory; -import com.microsoft.aad.msal4j.ConfidentialClientApplication; -import com.microsoft.aad.msal4j.IClientSecret; -import com.microsoft.aad.msal4j.MsalInteractionRequiredException; -import com.microsoft.aad.msal4j.MsalServiceException; -import com.microsoft.aad.msal4j.OnBehalfOfParameters; -import com.microsoft.aad.msal4j.UserAssertion; -import com.nimbusds.jwt.JWT; -import com.nimbusds.jwt.JWTParser; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.security.authentication.AnonymousAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.oauth2.client.JwtBearerOAuth2AuthorizedClientProvider; -import org.springframework.security.oauth2.client.OAuth2AuthorizationContext; -import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; -import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider; -import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.core.AbstractOAuth2Token; -import org.springframework.security.oauth2.core.AuthorizationGrantType; -import org.springframework.security.oauth2.core.OAuth2AccessToken; -import org.springframework.security.oauth2.core.OAuth2ErrorCodes; -import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames; -import org.springframework.security.oauth2.server.resource.authentication.AbstractOAuth2TokenAuthenticationToken; -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletResponse; -import java.net.MalformedURLException; -import java.text.ParseException; -import java.time.Clock; -import java.time.Duration; -import java.time.Instant; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ExecutionException; - -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.ON_BEHALF_OF; - -/** - * A strategy for authorizing (or re-authorizing) an OAuth 2.0 Client. This implementations implement {@link - * Constants#ON_BEHALF_OF "on_behalf_of" authorization grant type}. - * - * @see AuthorizationGrantType - * @see OAuth2AuthorizedClientProvider - * @deprecated use {@link JwtBearerOAuth2AuthorizedClientProvider} instead. - */ -@Deprecated -public class AadOboOAuth2AuthorizedClientProvider implements OAuth2AuthorizedClientProvider { - - private static final Logger LOGGER = LoggerFactory.getLogger(AadOboOAuth2AuthorizedClientProvider.class); - - private final Clock clock = Clock.systemUTC(); - - private final Duration clockSkew = Duration.ofSeconds(60); - - /** - * Attempt to authorize (or re-authorize) the - * {@link OAuth2AuthorizationContext#getClientRegistration() client} in the provided - * context. Implementations must return {@code null} if authorization is not supported - * for the specified client, e.g. the provider doesn't support the - * {@link ClientRegistration#getAuthorizationGrantType() authorization grant} type - * configured for the client. - * - * @param context the context that holds authorization-specific state for the client - * @return the {@link OAuth2AuthorizedClient} or {@code null} if authorization is not - * supported for the specified client - */ - @Override - public OAuth2AuthorizedClient authorize(OAuth2AuthorizationContext context) { - Assert.notNull(context, "context cannot be null"); - ClientRegistration clientRegistration = context.getClientRegistration(); - - if (!ON_BEHALF_OF.equals(clientRegistration.getAuthorizationGrantType())) { - return null; - } - - OAuth2AuthorizedClient authorizedClient = context.getAuthorizedClient(); - if (authorizedClient != null && !hasTokenExpired(authorizedClient.getAccessToken())) { - // If client is already authorized but access token is NOT expired than no need for re-authorization - return null; - } - - return getOboAuthorizedClient(context.getClientRegistration(), context.getPrincipal()); - } - - private boolean hasTokenExpired(AbstractOAuth2Token token) { - Instant expiresAt = token.getExpiresAt(); - if (expiresAt == null) { - return true; - } - - expiresAt = expiresAt.minus(this.clockSkew); - return this.clock.instant().isAfter(expiresAt); - } - - - @SuppressWarnings({ "unchecked" }) - private T getOboAuthorizedClient(ClientRegistration clientRegistration, - Authentication principal) { - if (principal instanceof AnonymousAuthenticationToken) { - LOGGER.debug("Found anonymous authentication."); - return null; - } - - if (!(principal instanceof AbstractOAuth2TokenAuthenticationToken)) { - throw new IllegalStateException("Unsupported token implementation " + principal.getClass()); - } - - try { - String accessToken = ((AbstractOAuth2TokenAuthenticationToken) principal).getToken() - .getTokenValue(); - OnBehalfOfParameters parameters = OnBehalfOfParameters - .builder(clientRegistration.getScopes(), new UserAssertion(accessToken)) - .build(); - ConfidentialClientApplication clientApplication = createApp(clientRegistration); - if (null == clientApplication) { - return null; - } - - String oboAccessToken = clientApplication.acquireToken(parameters).get().accessToken(); - JWT parser = JWTParser.parse(oboAccessToken); - Date iat = (Date) parser.getJWTClaimsSet().getClaim("iat"); - Date exp = (Date) parser.getJWTClaimsSet().getClaim("exp"); - OAuth2AccessToken oAuth2AccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, - oboAccessToken, - Instant.ofEpochMilli(iat.getTime()), - Instant.ofEpochMilli(exp.getTime())); - OAuth2AuthorizedClient oAuth2AuthorizedClient = new OAuth2AuthorizedClient(clientRegistration, - principal.getName(), - oAuth2AccessToken); - LOGGER.info("load obo authorized client success"); - return (T) oAuth2AuthorizedClient; - } catch (ExecutionException exception) { - // Handle conditional access policy, step 1. - // A user interaction is required, but we are in a web API, and therefore, we need to report back to the - // client through a 'WWW-Authenticate' header https://tools.ietf.org/html/rfc6750#section-3.1 - Optional.of(exception) - .map(Throwable::getCause) - .filter(e -> e instanceof MsalInteractionRequiredException) - .map(e -> (MsalInteractionRequiredException) e) - .map(MsalServiceException::claims) - .filter(StringUtils::hasText) - .ifPresent(this::replyForbiddenWithWwwAuthenticateHeader); - LOGGER.error("Failed to load authorized client.", exception); - } catch (InterruptedException e) { - LOGGER.warn("Interrupted during acquiring token for obo authorized client!", e); - // Restore interrupted state... - Thread.currentThread().interrupt(); - } catch (ParseException e) { - LOGGER.error("Failed to load authorized client.", e); - } - return null; - } - - /** - * Create Application - * - * @param clientRegistration clients that need to be registered - * @return the {@link ConfidentialClientApplication} or {@code null} - */ - ConfidentialClientApplication createApp(ClientRegistration clientRegistration) { - String authorizationUri = clientRegistration.getProviderDetails().getAuthorizationUri(); - String authority = interceptAuthorizationUri(authorizationUri); - IClientSecret clientCredential = ClientCredentialFactory - .createFromSecret(clientRegistration.getClientSecret()); - try { - return ConfidentialClientApplication.builder(clientRegistration.getClientId(), clientCredential) - .authority(authority) - .build(); - } catch (MalformedURLException e) { - LOGGER.error("Failed to create ConfidentialClientApplication", e); - } - return null; - } - - private String interceptAuthorizationUri(String authorizationUri) { - int count = 0; - int slashNumber = 4; - for (int i = 0; i < authorizationUri.length(); i++) { - if (authorizationUri.charAt(i) == '/') { - count++; - } - if (count == slashNumber) { - return authorizationUri.substring(0, i + 1); - } - } - return null; - } - - private void replyForbiddenWithWwwAuthenticateHeader(String claims) { - ServletRequestAttributes attr = - (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); - HttpServletResponse response = attr.getResponse(); - Assert.notNull(response, "HttpServletResponse should not be null."); - response.setStatus(HttpStatus.FORBIDDEN.value()); - Map parameters = new LinkedHashMap<>(); - parameters.put(Constants.CONDITIONAL_ACCESS_POLICY_CLAIMS, claims); - parameters.put(OAuth2ParameterNames.ERROR, OAuth2ErrorCodes.INVALID_TOKEN); - parameters.put(OAuth2ParameterNames.ERROR_DESCRIPTION, "The resource server requires higher privileges " - + "than " - + "provided by the access token"); - response.addHeader(HttpHeaders.WWW_AUTHENTICATE, Constants.BEARER_PREFIX + parameters); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AzureClientRegistration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AzureClientRegistration.java deleted file mode 100644 index 17ee73ed2fe0..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AzureClientRegistration.java +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; - -import org.springframework.security.oauth2.client.registration.ClientRegistration; - -import java.util.Set; - -/** - * Azure oauth2 client registration. - * It has 2 kind of scopes: - * 1. AzureClientRegistration.client.scopes: used to authorize. - * 2. AzureClientRegistration.accessTokenScopes: used to get access_token. - */ -public class AzureClientRegistration { - - private final ClientRegistration client; - private final Set accessTokenScopes; - - /** - * Creates a new instance of {@link AzureClientRegistration}. - * - * @param client the client registration - * @param scopes the set of access token scopes - */ - public AzureClientRegistration(ClientRegistration client, Set scopes) { - this.client = client; - this.accessTokenScopes = scopes; - } - - /** - * Gets the client registration. - * - * @return the client registration - */ - public ClientRegistration getClient() { - return client; - } - - /** - * Gets the set of access token scopes. - * - * @return the set of access token scopes - */ - public Set getAccessTokenScopes() { - return accessTokenScopes; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/package-info.java deleted file mode 100644 index 6cc281663394..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Active Directory. - */ -package com.azure.spring.cloud.autoconfigure.aad; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthorizationGrantType.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthorizationGrantType.java deleted file mode 100644 index 196e11626da2..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthorizationGrantType.java +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; - -import org.springframework.security.oauth2.core.AuthorizationGrantType; - -/** - * Defines grant types: client_credentials, authorization_code, on_behalf_of, azure_delegated. - * - * @deprecated use {@link AuthorizationGrantType} instead. - */ -@Deprecated -public enum AadAuthorizationGrantType { - - /** - * Client credentials - */ - CLIENT_CREDENTIALS("client_credentials"), - - /** - * Authorization code - */ - AUTHORIZATION_CODE("authorization_code"), - - /** - * On behalf of - */ - ON_BEHALF_OF("on_behalf_of"), - - /** - * Azure delegated - */ - AZURE_DELEGATED("azure_delegated"); - - private final String authorizationGrantType; - - AadAuthorizationGrantType(String authorizationGrantType) { - // For backward compatibility, we support 'on-behalf-of'. - if ("on-behalf-of".equals(authorizationGrantType)) { - this.authorizationGrantType = "on_behalf_of"; - } else { - this.authorizationGrantType = authorizationGrantType; - } - } - - /** - * Gets the string representation of the enum. - * - * @return the string representation of the enum - */ - public String getValue() { - return authorizationGrantType; - } - - /** - * Whether the other grant type is the same as the Azure AD grant type. - * - * @param grantType the other grant type - * @return whether the other grant type is the same as the Azure AD grant type - */ - public boolean isSameGrantType(AuthorizationGrantType grantType) { - return this.authorizationGrantType.equals(grantType.getValue()); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/package-info.java deleted file mode 100644 index 9008f2be8987..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Configuration properties class for Active Directory. - */ -package com.azure.spring.cloud.autoconfigure.aad.properties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cAutoConfiguration.java deleted file mode 100644 index b4d6fafb724b..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cAutoConfiguration.java +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c; - -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadOAuth2ClientConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.configuration.AadB2cOAuth2ClientConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.configuration.AadB2cPropertiesConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cConditions; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cOidcIdTokenDecoderFactory; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2LoginConfigurer; -import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; -import org.springframework.security.oauth2.jwt.JwtDecoder; -import org.springframework.security.oauth2.jwt.JwtDecoderFactory; -import org.springframework.web.client.RestTemplate; - -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; - -/** - * Configure the necessary beans for AAD B2C authentication and authorization, - * and import {@link AadB2cOAuth2ClientConfiguration} class for AAD B2C OAuth2 client support. - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) -@ConditionalOnProperty(value = "spring.cloud.azure.active-directory.b2c.enabled", havingValue = "true") -@Conditional(AadB2cConditions.UserFlowCondition.class) -@Import({ AadB2cPropertiesConfiguration.class, AadB2cOAuth2ClientConfiguration.class}) -public class AadB2cAutoConfiguration { - - private final RestTemplateBuilder restTemplateBuilder; - - /** - * Creates a new instance of {@link AadOAuth2ClientConfiguration}. - * - * @param restTemplateBuilder the RestTemplateBuilder - */ - public AadB2cAutoConfiguration(RestTemplateBuilder restTemplateBuilder) { - this.restTemplateBuilder = restTemplateBuilder; - } - - /** - * Declare AADB2CAuthorizationRequestResolver bean. - * @param repository The clientRegistrationRepository, - * @param properties The AADB2CProperties, - * @return AADB2CAuthorizationRequestResolver bean - */ - @Bean - @ConditionalOnMissingBean - public AadB2cAuthorizationRequestResolver b2cOAuth2AuthorizationRequestResolver( - ClientRegistrationRepository repository, AadB2cProperties properties) { - return new AadB2cAuthorizationRequestResolver(repository, properties); - } - - /** - * Declare AADB2CLogoutSuccessHandler bean. - * @param properties The AADB2CProperties - * @return AADB2CLogoutSuccessHandler bean - */ - @Bean - @ConditionalOnMissingBean - public AadB2cLogoutSuccessHandler b2cLogoutSuccessHandler(AadB2cProperties properties) { - return new AadB2cLogoutSuccessHandler(properties); - } - - /** - * Declare AADB2COidcLoginConfigurer bean. - * - * @param handler the AAD B2C logout success handler - * @param resolver the AAD B2C authorization request resolver - * @return AADB2COidcLoginConfigurer bean - */ - @Bean - @ConditionalOnMissingBean - public AadB2cOidcLoginConfigurer b2cLoginConfigurer(AadB2cLogoutSuccessHandler handler, - AadB2cAuthorizationRequestResolver resolver) { - return new AadB2cOidcLoginConfigurer(handler, resolver, null, restTemplateBuilder); - } - - /** - * Provide {@link JwtDecoderFactory} used in {@link OAuth2LoginConfigurer#init}. The {@link JwtDecoder} created by - * current {@link JwtDecoderFactory} will use {@link RestTemplate} created by {@link RestTemplateBuilder} bean. - * - * @return JwtDecoderFactory - */ - @Bean - @ConditionalOnMissingBean - JwtDecoderFactory azureAdJwtDecoderFactory() { - return new AadB2cOidcIdTokenDecoderFactory(createRestTemplate(restTemplateBuilder)); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/configuration/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/configuration/package-info.java deleted file mode 100644 index 5028165b57bf..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/configuration/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Configuration class for Active Directory B2C. - */ -package com.azure.spring.cloud.autoconfigure.aadb2c.configuration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/package-info.java deleted file mode 100644 index e28e312a4789..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Active Directory B2C. - */ -package com.azure.spring.cloud.autoconfigure.aadb2c; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/package-info.java deleted file mode 100644 index 13323d693325..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Configuration properties class for Active Directory B2C. - */ -package com.azure.spring.cloud.autoconfigure.aadb2c.properties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/appconfiguration/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/appconfiguration/package-info.java deleted file mode 100644 index 92b52c9ab178..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/appconfiguration/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for App Configuration. - */ -package com.azure.spring.cloud.autoconfigure.appconfiguration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCfService.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCfService.java deleted file mode 100644 index 9084d46efff5..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCfService.java +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Collectors; - -enum AzureCfService { - - SERVICEBUS("servicebus", "azure-servicebus", - getImmutableMap("connectionString", "connection-string")), - - EVENTHUBS("eventhubs", "azure-eventhubs", - getImmutableMap("connectionString", "connection-string")), - - STORAGE("storage.blob", "azure-storage", - getImmutableMap( - "storageAccountName", "account-name", "accessKey", "account-key")), - - EVENTHUBS_PROCESSOR("eventhubs.processor.checkpoint-store", "azure-storage", - getImmutableMap( - "storageAccountName", "account-name", - "accessKey", "account-key" - )), - - REDIS("spring.redis", "azure-rediscache", - getImmutableMap("host", "host", "password", "password", "port", "port"), - false); - - private static final String SPRING_CLOUD_AZURE_PROPERTY_PREFIX = "spring.cloud.azure."; - - /** - * Name of the Azure Cloud Foundry service in the VCAP_SERVICES JSON. - */ - private final String cfServiceName; - - /** - * Name of the Spring Cloud Azure property. - */ - private final String azureServiceName; - - /** - * Direct mapping of Azure service broker field names in VCAP_SERVICES JSON to Spring Cloud - * Azure property names. - */ - private final Map cfToAzureProperties; - - private final boolean isAzureProperty; - - AzureCfService(String azureServiceName, String cfServiceName, Map cfToAzureProperties) { - this(azureServiceName, cfServiceName, cfToAzureProperties, true); - } - - AzureCfService(String azureServiceName, String cfServiceName, Map cfToAzureProperties, - boolean isAzureProperty) { - this.cfServiceName = cfServiceName; - this.azureServiceName = azureServiceName; - this.isAzureProperty = isAzureProperty; - this.cfToAzureProperties = buildCfToAzureProperties(cfToAzureProperties); - } - - public String getCfServiceName() { - return this.cfServiceName; - } - - public Map getCfToAzureProperties() { - return this.cfToAzureProperties; - } - - public String getAzureServiceName() { - return this.azureServiceName; - } - - private Map buildCfToAzureProperties(Map cfToAzureProperties) { - return cfToAzureProperties.entrySet().stream().collect( - Collectors.toMap(Map.Entry::getKey, e -> getPropertyPrefix() + e.getValue())); - } - - private String getPropertyPrefix() { - if (this.isAzureProperty) { - return SPRING_CLOUD_AZURE_PROPERTY_PREFIX + this.azureServiceName + "."; - } - - return this.azureServiceName + "."; - } - - private static Map getImmutableMap(String... values) { - int pairs = values.length / 2; - Map output = new HashMap<>(pairs); - - for (int i = 0; i < pairs; i++) { - String key = values[2 * i]; - String value = values[(2 * i) + 1]; - output.put(key, value); - } - - return Collections.unmodifiableMap(output); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCloudFoundryEnvironmentPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCloudFoundryEnvironmentPostProcessor.java deleted file mode 100644 index feb753a7bd17..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCloudFoundryEnvironmentPostProcessor.java +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor; -import org.springframework.boot.env.EnvironmentPostProcessor; -import org.springframework.boot.json.JsonParser; -import org.springframework.boot.json.JsonParserFactory; -import org.springframework.core.Ordered; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.PropertiesPropertySource; -import org.springframework.util.StringUtils; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; - - -/** - * Converts Azure service broker metadata into Spring Cloud Azure configuration properties. - * - */ -public class AzureCloudFoundryEnvironmentPostProcessor implements EnvironmentPostProcessor, Ordered { - private static final Logger LOG = LoggerFactory.getLogger(AzureCloudFoundryEnvironmentPostProcessor.class); - - private static final String VCAP_SERVICES_ENVVAR = "VCAP_SERVICES"; - - private static final JsonParser PARSER = JsonParserFactory.getJsonParser(); - - private static final int ORDER = ConfigDataEnvironmentPostProcessor.ORDER - 1; - - @SuppressWarnings("unchecked") - private static Properties retrieveCfProperties(Map vcapMap, AzureCfService azureCfService) { - Properties properties = new Properties(); - - try { - List serviceBindings = (List) vcapMap.get(azureCfService.getCfServiceName()); - - if (serviceBindings == null) { - return properties; - } - - if (serviceBindings.size() != 1) { - LOG.warn("The service " + azureCfService.getCfServiceName() + " has to be bound to a " - + "Cloud Foundry application once and only once."); - return properties; - } - - Map serviceBinding = (Map) serviceBindings.get(0); - Map credentialsMap = (Map) serviceBinding.get("credentials"); - azureCfService.getCfToAzureProperties().forEach( - (cfPropKey, azurePropKey) -> properties.put(azurePropKey, credentialsMap.get(cfPropKey))); - } catch (ClassCastException e) { - LOG.warn("Unexpected format of CF (VCAP) properties", e); - } - - return properties; - } - - @Override - public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { - if (StringUtils.hasText(environment.getProperty(VCAP_SERVICES_ENVVAR))) { - Map vcapMap = PARSER.parseMap(environment.getProperty(VCAP_SERVICES_ENVVAR)); - - Properties azureCfServiceProperties = new Properties(); - - Set servicesToMap = new HashSet<>(Arrays.asList(AzureCfService.values())); - - servicesToMap.forEach(service -> azureCfServiceProperties.putAll(retrieveCfProperties(vcapMap, service))); - - environment.getPropertySources() - .addFirst(new PropertiesPropertySource("azureCf", azureCfServiceProperties)); - } - } - - @Override - public int getOrder() { - return ORDER; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/Constants.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/Constants.java deleted file mode 100644 index e03a5ef4fd3f..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/Constants.java +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -/** - * utils class of Constants - */ -final class Constants { - - private Constants() { - - } - - // Property namespaces - /** - * ServiceBus namespace - */ - static final String NAMESPACE_SERVICE_BUS = "azure.servicebus"; - - /** - * Document DB namespace - */ - static final String NAMESPACE_DOCUMENTDB = "azure.documentdb"; - - // VCAP credential key names - /** - * Shared access key name - */ - static final String SHARED_ACCESS_KEY_NAME = "shared_access_key_name"; - - /** - * Shared access key value - */ - static final String SHARED_ACCESS_KEY_VALUE = "shared_access_key_value"; - - /** - * Namespace name - */ - static final String NAMESPACE_NAME = "namespace_name"; - - /** - * Host endpoint - */ - static final String HOST_ENDPOINT = "documentdb_host_endpoint"; - - /** - * Master key - */ - static final String MASTER_KEY = "documentdb_master_key"; - - /** - * Database ID - */ - static final String DATABASE_ID = "documentdb_database_id"; - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapPojo.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapPojo.java deleted file mode 100644 index f6902888ee4c..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapPojo.java +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -/** - * the pojo of VcapPojo - */ -class VcapPojo { - private String serviceBrokerName; - - private VcapServiceConfig serviceConfig; - - /** - * Gets the service broker name. - * - * @return the service broker name - */ - public String getServiceBrokerName() { - return serviceBrokerName; - } - - /** - * Sets the service broker name. - * - * @param serviceBrokerName the service broker name - */ - public void setServiceBrokerName(String serviceBrokerName) { - this.serviceBrokerName = serviceBrokerName; - } - - /** - * Gets the service config. - * - * @return the service config - */ - public VcapServiceConfig getServiceConfig() { - return serviceConfig; - } - - /** - * Sets the service config. - * - * @param serviceConfig the service config - */ - public void setServiceConfig(VcapServiceConfig serviceConfig) { - this.serviceConfig = serviceConfig; - } - - @Override - public String toString() { - return "VcapPojo [serviceBrokerName=" + serviceBrokerName - + ", serviceConfig=" + serviceConfig + "]"; - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapProcessor.java deleted file mode 100644 index 4dd700679897..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapProcessor.java +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.env.EnvironmentPostProcessor; -import org.springframework.boot.json.JsonParseException; -import org.springframework.boot.json.JsonParser; -import org.springframework.boot.json.JsonParserFactory; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.lang.NonNull; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * Parses VCAP_SERVICES environment variable and sets corresponding property values. - *

- * Note that this class gets invoked before Spring creates the logging subsystem, so - * we just use System.out.println instead. - */ -@Service -@Configuration -public class VcapProcessor implements EnvironmentPostProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(VcapProcessor.class); - - /** - * VCAP services - */ - private static final String VCAP_SERVICES = "VCAP_SERVICES"; - - /** - * Log variable - */ - private static final String LOG_VARIABLE = "COM_MICROSOFT_AZURE_CLOUDFOUNDRY_SERVICE_LOG"; - private static final String AZURE = "azure-"; - private static final String USER_PROVIDED = "user-provided"; - private static final String AZURE_SERVICE_BROKER_NAME = "azure-service-broker-name"; - private static final String AZURE_SERVICE_PLAN = "azure-service-plan"; - private static final String CREDENTIALS = "credentials"; - private boolean logFlag = false; - - @Override - public void postProcessEnvironment(ConfigurableEnvironment confEnv, SpringApplication app) { - final Map environment = confEnv.getSystemEnvironment(); - final String logValue = (String) environment.get(LOG_VARIABLE); - - if ("true".equals(logValue)) { - logFlag = true; - } - - log("VcapParser.postProcessEnvironment: Start"); - - final String vcapServices = (String) environment.get(VCAP_SERVICES); - final List vcapPojos = parseVcapService(vcapServices); - - new VcapResult(confEnv, vcapPojos.toArray(new VcapPojo[0]), logFlag); - - log("VcapParser.postProcessEnvironment: End"); - } - - @SuppressWarnings("unchecked") - private VcapServiceConfig getVcapServiceConfig(@NonNull Map configMap) { - final VcapServiceConfig serviceConfig = new VcapServiceConfig(); - - serviceConfig.setLabel((String) configMap.getOrDefault("label", null)); - serviceConfig.setName((String) configMap.getOrDefault("name", null)); - serviceConfig.setProvider((String) configMap.getOrDefault("provider", null)); - serviceConfig.setSyslogDrainUrl((String) configMap.getOrDefault("syslog_drain_url", null)); - serviceConfig.setPlan((String) configMap.getOrDefault("plan", null)); - - final List tags = (List) configMap.get("tags"); - final List volumeMounts = (List) configMap.get("volume_mounts"); - - if (tags != null) { - serviceConfig.setTags(tags.toArray(new String[0])); - } - - if (volumeMounts != null) { - serviceConfig.setVolumeMounts(volumeMounts.toArray(new String[0])); - } - - serviceConfig.setCredentials((Map) configMap.get(CREDENTIALS)); - - return serviceConfig; - } - - private List getVcapServiceConfigList(@NonNull Object value) { - Assert.isInstanceOf(List.class, value); - @SuppressWarnings("unchecked") final List> configs = (List>) value; - - return configs.stream().map(this::getVcapServiceConfig).collect(Collectors.toList()); - } - - /** - * Parses the VCap service. - * - * @param vcapServices the VCap service - * @return the list of Vcap POJOs - */ - List parseVcapService(String vcapServices) { - final List results = new ArrayList<>(); - - log("VcapParser.parse: vcapServices = " + vcapServices); - - if (StringUtils.hasText(vcapServices)) { - try { - final JsonParser parser = JsonParserFactory.getJsonParser(); - final Map servicesMap = parser.parseMap(vcapServices); - final Set> services = servicesMap.entrySet(); - - Assert.notNull(services, "Services entrySet cannot be null."); - - for (final Map.Entry serviceEntry : services) { - final String name = serviceEntry.getKey(); - - if (name.startsWith(AZURE) || USER_PROVIDED.equals(name)) { - Assert.isInstanceOf(List.class, serviceEntry.getValue()); - final List azureServices = getVcapServiceConfigList(serviceEntry.getValue()); - - results.addAll( - azureServices.stream() - .map(service -> parseService(name, service, vcapServices)) - .filter(Objects::nonNull).collect(Collectors.toList()) - ); - } - } - } catch (JsonParseException e) { - LOGGER.error("Error parsing " + vcapServices, e); - } - } - - return results; - - } - - private VcapPojo parseService(String serviceBrokerName, VcapServiceConfig serviceConfig, String vCapServices) { - final VcapPojo result = new VcapPojo(); - final Map credentials = serviceConfig.getCredentials(); - - if (USER_PROVIDED.equals(serviceBrokerName)) { - if (credentials == null) { - return null; - } - - final String userServiceBrokerName = credentials.remove(AZURE_SERVICE_BROKER_NAME); - if (userServiceBrokerName == null) { - return null; - } - - result.setServiceBrokerName(userServiceBrokerName); - final String userServicePlan = credentials.remove(AZURE_SERVICE_PLAN); - serviceConfig.setPlan(userServicePlan); - serviceConfig.setCredentials(credentials); - } else { - result.setServiceBrokerName(serviceBrokerName); - serviceConfig.setPlan(serviceConfig.getPlan()); - if (credentials == null) { - LOGGER.error("Found {}, but missing {} : {}", serviceBrokerName, CREDENTIALS, vCapServices); - } - } - - result.setServiceConfig(serviceConfig); - return result; - } - - private void log(String msg) { - if (logFlag) { - LOGGER.info(msg); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapResult.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapResult.java deleted file mode 100644 index e895d40f93ee..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapResult.java +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.MutablePropertySources; -import org.springframework.core.env.PropertySource; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -/** - *class the result of VcapProcessor - */ -@JsonIgnoreProperties -class VcapResult implements Serializable { - - private static final Logger LOGGER = LoggerFactory.getLogger(VcapResult.class); - - private static final String AZURE_SERVICE_BUS_DOMAIN = "servicebus.windows.net"; - - private static final String PROPERTY_SOURCE_NAME = "defaultProperties"; - private static final String RESULT = "result"; - private static final String CONNECTION_STRING = "connectionString"; - private static final String URI = "uri"; - private static final String KEY = "key"; - private static final String DATABASE = "database"; - private static final long serialVersionUID = -4825963001214199795L; - - /** - * Whether to log - */ - private final boolean logFlag; - - /** - * Creates a new instance of {@link VcapResult}. - * - * @param environment the environment - * @param pojos the VCap POJOs - * @param logFlag whether to log - */ - VcapResult(ConfigurableEnvironment environment, VcapPojo[] pojos, boolean logFlag) { - this.logFlag = logFlag; - - populateProperties(environment, pojos); - } - - /** - * Populates default properties during @EnvironmentPostProcessor processing. - *

- * Note that this class gets invoked before Spring creates the logging - * subsystem, so we just use System.out.println instead. - */ - private void populateProperties(ConfigurableEnvironment environment, VcapPojo[] pojos) { - final Map map = new HashMap<>(); - populateDefaultServiceBusProperties(map, - findPojoForServiceType(VcapServiceType.AZURE_SERVICEBUS, pojos)); - populateDefaultDocumentDBProperties(map, - findPojoForServiceType(VcapServiceType.AZURE_COSMOSDB, pojos)); - addOrReplace(environment.getPropertySources(), map); - } - - private VcapPojo findPojoForServiceType(VcapServiceType serviceType, VcapPojo[] pojos) { - if (serviceType == null) { - log("VcapResult.findPojoForServiceType: ServiceType is null, no service found."); - return null; - } - - VcapPojo pojo = null; - - switch (findCountByServiceType(serviceType, pojos)) { - case 0: - log("VcapResult.findPojoForServiceType: No services of type " - + serviceType + " found."); - break; - case 1: - log("VcapResult.findPojoForServiceType: One services of type " - + serviceType + " found."); - pojo = findByServiceType(serviceType, pojos); - if (pojo != null) { - log("VcapResult.findPojoForServiceType: Found the matching pojo"); - } - break; - default: - log("VcapResult.findPojoForServiceType: More than one service of type " - + serviceType - + " found, cannot autoconfigure service, must use factory instead."); - break; - } - return pojo; - } - - private int findCountByServiceType(VcapServiceType serviceType, VcapPojo[] pojos) { - int result = 0; - - if (serviceType != null) { - for (final VcapPojo pojo : pojos) { - if (serviceType.toString().equals(pojo.getServiceBrokerName())) { - result++; - } - } - } - - return result; - } - - private void populateDefaultServiceBusProperties(Map map, VcapPojo pojo) { - log("VcapResult.populateDefaultServiceBusProperties " + pojo); - map.put(Constants.NAMESPACE_SERVICE_BUS + "." + RESULT, this); - if (pojo != null) { - map.put(Constants.NAMESPACE_SERVICE_BUS + "." + CONNECTION_STRING, buildServiceBusConnectString(pojo)); - log("VcapResult.populateDefaultServiceBusProperties: Updated Service Bus properties"); - } - } - - private String buildServiceBusConnectString(VcapPojo pojo) { - final String connectionString = - "Endpoint=sb://" - + pojo.getServiceConfig().getCredentials().get(Constants.NAMESPACE_NAME) - + "." - + AZURE_SERVICE_BUS_DOMAIN - + "/;" - + "SharedAccessKeyName=" - + pojo.getServiceConfig().getCredentials().get( - Constants.SHARED_ACCESS_KEY_NAME) - + ";" - + "SharedAccessKey=" - + pojo.getServiceConfig().getCredentials().get( - Constants.SHARED_ACCESS_KEY_VALUE); - log("connectionString name = " + connectionString); - return connectionString; - } - - private void populateDefaultDocumentDBProperties(Map map, - VcapPojo pojo) { - log("VcapResult.populateDefaultDocumentDBProperties " + pojo); - map.put(Constants.NAMESPACE_DOCUMENTDB + "." + RESULT, this); - if (pojo != null) { - map.put(Constants.NAMESPACE_DOCUMENTDB + "." + URI, pojo - .getServiceConfig().getCredentials().get(Constants.HOST_ENDPOINT)); - map.put(Constants.NAMESPACE_DOCUMENTDB + "." + KEY, pojo - .getServiceConfig().getCredentials().get(Constants.MASTER_KEY)); - map.put(Constants.NAMESPACE_DOCUMENTDB + "." + DATABASE, pojo - .getServiceConfig().getCredentials().get(Constants.DATABASE_ID)); - log("VcapResult.populateDefaultDocumentDBProperties: Updated DocumentDB properties"); - } - } - - private VcapPojo findByServiceType(VcapServiceType serviceType, VcapPojo[] pojos) { - VcapPojo result = null; - - if (serviceType != null) { - for (final VcapPojo pojo : pojos) { - if (serviceType.toString().equals(pojo.getServiceBrokerName())) { - result = pojo; - break; - } - } - } - - return result; - } - - private void addOrReplace(MutablePropertySources propertySources, - Map map) { - MapPropertySource target = null; - if (propertySources.contains(PROPERTY_SOURCE_NAME)) { - final PropertySource source = propertySources - .get(PROPERTY_SOURCE_NAME); - if (source instanceof MapPropertySource) { - target = (MapPropertySource) source; - for (final Entry entry : map.entrySet()) { - if (!target.containsProperty(entry.getKey())) { - target.getSource().put(entry.getKey(), map.get(entry.getKey())); - } - } - } - } - if (target == null) { - target = new MapPropertySource(PROPERTY_SOURCE_NAME, map); - } - if (!propertySources.contains(PROPERTY_SOURCE_NAME)) { - propertySources.addLast(target); - } - } - - private void log(String msg) { - if (logFlag) { - LOGGER.info(msg); - } - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapServiceConfig.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapServiceConfig.java deleted file mode 100644 index 199b93109b87..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapServiceConfig.java +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -/** - * config class for VcapService - */ -class VcapServiceConfig { - private Map credentials = new HashMap<>(); - private String label; - private String name; - @JsonIgnoreProperties(ignoreUnknown = true) - private String plan; - private String provider; - - @JsonProperty("syslog_drain_url") - private String syslogDrainUrl; - private String[] tags; - - @JsonProperty("volume_mounts") - private String[] volumeMounts; - - /** - * Gets the credentials. - * - * @return the credentials - */ - public Map getCredentials() { - return credentials; - } - - /** - * Sets the credentials. - * - * @param credentials the credentials - */ - public void setCredentials(Map credentials) { - this.credentials = credentials; - } - - /** - * Gets the label. - * - * @return the label - */ - public String getLabel() { - return label; - } - - /** - * Sets the label. - * - * @param label the label - */ - public void setLabel(String label) { - this.label = label; - } - - /** - * Gets the service name. - * - * @return the service name - */ - public String getName() { - return name; - } - - /** - * Sets the service name. - * - * @param serviceName the service name - */ - public void setName(String serviceName) { - this.name = serviceName; - } - - /** - * Gets the plan. - * - * @return the plan - */ - public String getPlan() { - return plan; - } - - /** - * Sets the plan. - * - * @param plan the plan - */ - public void setPlan(String plan) { - this.plan = plan; - } - - /** - * Gets the provider. - * - * @return the provider - */ - public String getProvider() { - return provider; - } - - /** - * Sets the provider. - * - * @param provider the provider - */ - public void setProvider(String provider) { - this.provider = provider; - } - - /** - * Gets the system log drain URL. - * - * @return the system log drain URL - */ - public String getSyslogDrainUrl() { - return syslogDrainUrl; - } - - /** - * Sets the system log drain URL. - * - * @param syslogDrainUrl the system log drain URL - */ - public void setSyslogDrainUrl(String syslogDrainUrl) { - this.syslogDrainUrl = syslogDrainUrl; - } - - /** - * Gets the tags. - * - * @return the tags - */ - public String[] getTags() { - return arrayCopy(tags); - } - - /** - * Sets the tags. - * - * @param tags the tags - */ - public void setTags(String[] tags) { - this.tags = arrayCopy(tags); - } - - /** - * Gets the volume mounts. - * - * @return the volume mounts - */ - public String[] getVolumeMounts() { - return arrayCopy(volumeMounts); - } - - /** - * Sets the volume mounts. - * - * @param volumeMounts the volume mounts - */ - public void setVolumeMounts(String[] volumeMounts) { - this.volumeMounts = arrayCopy(volumeMounts); - } - - private static T[] arrayCopy(T[] origin) { - return origin == null ? null : Arrays.copyOf(origin, origin.length); - } - - @Override - public String toString() { - return "VcapServiceConfig [credentials=" + credentials + ", label=" + label - + ", serviceName=" + name + ", plan=" - + plan + ", provider=" + provider + ", syslogDrainUrl=" - + syslogDrainUrl + ", tags=" + Arrays.toString(tags) - + ", volumeMounts=" + Arrays.toString(volumeMounts) + "]"; - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapServiceType.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapServiceType.java deleted file mode 100644 index a5586e676377..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/VcapServiceType.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -/** - * enum VcapServiceType - */ -enum VcapServiceType { - /** - * Azure Redis cache - */ - AZURE_REDISCACHE("azure-rediscache"), - - /** - * Azure Cosmos DB - */ - AZURE_COSMOSDB("azure-documentdb"), - - /** - * Azure Storage - */ - AZURE_STORAGE("azure-storage"), - - /** - * Azure SQL Db - */ - AZURE_SQLDB("azure-sqldb"), - - /** - * Azure ServiceBus - */ - AZURE_SERVICEBUS("azure-servicebus"); - - private final String text; - - VcapServiceType(String text) { - this.text = text; - } - - @Override - public String toString() { - return text; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/package-info.java deleted file mode 100644 index 7af2d02ca1df..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Spring Environment Cloud Foundry. - */ -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/package-info.java deleted file mode 100644 index 247b3e80b96f..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Cloud Foundry. - */ -package com.azure.spring.cloud.autoconfigure.cloudfoundry; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/package-info.java deleted file mode 100644 index 2bf970831b2d..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's Compatibility-verifier for Spring-boot. - */ -package com.azure.spring.cloud.autoconfigure.compatibility; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/package-info.java deleted file mode 100644 index 38b32457c79d..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * {@code @Condition} annotations and supporting classes. - */ -package com.azure.spring.cloud.autoconfigure.condition; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/package-info.java deleted file mode 100644 index a8372c9890d9..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for the Spring context. - */ -package com.azure.spring.cloud.autoconfigure.context; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cosmos/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cosmos/package-info.java deleted file mode 100644 index 52a2d25a19bd..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cosmos/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Cosmos. - */ -package com.azure.spring.cloud.autoconfigure.cosmos; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/package-info.java deleted file mode 100644 index f047b97347d5..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Spring Data Cosmos. - */ -package com.azure.spring.cloud.autoconfigure.data.cosmos; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/package-info.java deleted file mode 100644 index ab85c7d24ce1..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Event Hubs for Kafka with connection string authentication. - */ -package com.azure.spring.cloud.autoconfigure.eventhubs.kafka; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/package-info.java deleted file mode 100644 index 871e8fdff873..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Event Hubs. - */ -package com.azure.spring.cloud.autoconfigure.eventhubs; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/AzureServiceConfigurationBase.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/AzureServiceConfigurationBase.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/AzureServiceConfigurationBase.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/AzureServiceConfigurationBase.java index b9f476c0825a..5141bc3a3302 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/AzureServiceConfigurationBase.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/AzureServiceConfigurationBase.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure; +package com.azure.spring.cloud.autoconfigure.implementation; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureGlobalPropertiesUtils; import com.azure.spring.cloud.core.properties.AzureProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -18,10 +18,6 @@ public abstract class AzureServiceConfigurationBase { private final AzureGlobalProperties azureGlobalProperties; - /** - * Create an instance of {@link AzureServiceConfigurationBase}. - * @param azureProperties the {@link AzureProperties} object. - */ protected AzureServiceConfigurationBase(AzureGlobalProperties azureProperties) { this.azureGlobalProperties = azureProperties; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadAuthenticationFilterAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAuthenticationFilterAutoConfiguration.java similarity index 64% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadAuthenticationFilterAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAuthenticationFilterAutoConfiguration.java index 125784050df3..37fc7055e90f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadAuthenticationFilterAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAuthenticationFilterAutoConfiguration.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadPropertiesConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.filter.AadAppRoleStatelessAuthenticationFilter; -import com.azure.spring.cloud.autoconfigure.aad.filter.AadAuthenticationFilter; -import com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipalManager; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.RestOperationsResourceRetriever; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.filter.AadAppRoleStatelessAuthenticationFilter; +import com.azure.spring.cloud.autoconfigure.implementation.aad.filter.AadAuthenticationFilter; +import com.azure.spring.cloud.autoconfigure.implementation.aad.filter.UserPrincipalManager; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jose.RestOperationsResourceRetriever; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import com.nimbusds.jose.jwk.source.DefaultJWKSetCache; import com.nimbusds.jose.jwk.source.JWKSetCache; import com.nimbusds.jose.util.ResourceRetriever; @@ -38,7 +37,7 @@ @Configuration(proxyBeanMethods = false) @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @ConditionalOnExpression("${spring.cloud.azure.active-directory.enabled:false}") -@ConditionalOnMissingClass({ "org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken" }) +@ConditionalOnMissingClass({ "org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken" }) @Import(AadPropertiesConfiguration.class) public class AadAuthenticationFilterAutoConfiguration { @@ -48,15 +47,8 @@ public class AadAuthenticationFilterAutoConfiguration { private final AadAuthorizationServerEndpoints endpoints; private final RestTemplateBuilder restTemplateBuilder; - /** - * Creates a new instance of {@link AadAuthenticationFilterAutoConfiguration}. - * - * @param properties the AAD authentication properties - * @param restTemplateBuilder the RestTemplateBuilder - */ - public AadAuthenticationFilterAutoConfiguration( - AadAuthenticationProperties properties, - RestTemplateBuilder restTemplateBuilder) { + AadAuthenticationFilterAutoConfiguration(AadAuthenticationProperties properties, + RestTemplateBuilder restTemplateBuilder) { this.properties = properties; this.restTemplateBuilder = restTemplateBuilder; this.endpoints = new AadAuthorizationServerEndpoints( @@ -64,19 +56,10 @@ public AadAuthenticationFilterAutoConfiguration( properties.getProfile().getTenantId()); } - /** - * Declare AADAuthenticationFilter bean. - * - * @param resourceRetriever the resource retriever - * @param jwkSetCache the JWK set cache - * @return AADAuthenticationFilter bean - */ @Bean @ConditionalOnMissingBean(AadAuthenticationFilter.class) @ConditionalOnExpression("${spring.cloud.azure.active-directory.session-stateless:false} == false") - public AadAuthenticationFilter aadAuthenticationFilter( - ResourceRetriever resourceRetriever, - JWKSetCache jwkSetCache) { + AadAuthenticationFilter aadAuthenticationFilter(ResourceRetriever resourceRetriever, JWKSetCache jwkSetCache) { LOGGER.info("AadAuthenticationFilter Constructor."); return new AadAuthenticationFilter( properties, @@ -87,16 +70,10 @@ public AadAuthenticationFilter aadAuthenticationFilter( ); } - /** - * Declare AADAppRoleStatelessAuthenticationFilter bean. - * - * @param resourceRetriever the resource retriever - * @return AADAppRoleStatelessAuthenticationFilter bean - */ @Bean @ConditionalOnMissingBean(AadAppRoleStatelessAuthenticationFilter.class) @ConditionalOnExpression("${spring.cloud.azure.active-directory.session-stateless:false} == true") - public AadAppRoleStatelessAuthenticationFilter aadStatelessAuthFilter(ResourceRetriever resourceRetriever) { + AadAppRoleStatelessAuthenticationFilter aadStatelessAuthFilter(ResourceRetriever resourceRetriever) { LOGGER.info("Creating AadStatelessAuthFilter bean."); return new AadAppRoleStatelessAuthenticationFilter( new UserPrincipalManager( @@ -108,25 +85,15 @@ public AadAppRoleStatelessAuthenticationFilter aadStatelessAuthFilter(ResourceRe ); } - /** - * Declare JWT ResourceRetriever bean. - * - * @return JWT ResourceRetriever bean - */ @Bean @ConditionalOnMissingBean(ResourceRetriever.class) - public ResourceRetriever jwtResourceRetriever() { + ResourceRetriever jwtResourceRetriever() { return new RestOperationsResourceRetriever(restTemplateBuilder); } - /** - * Declare JWKSetCache bean. - * - * @return JWKSetCache bean - */ @Bean @ConditionalOnMissingBean(JWKSetCache.class) - public JWKSetCache jwkSetCache() { + JWKSetCache jwkSetCache() { long lifespan = properties.getJwkSetCacheLifespan().toMillis(); long refreshTime = properties.getJwkSetCacheRefreshTime().toMillis(); return new DefaultJWKSetCache(lifespan, refreshTime, TimeUnit.MILLISECONDS); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAutoConfiguration.java similarity index 67% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAutoConfiguration.java index 3dcc5607d7a6..913f14a7e541 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAutoConfiguration.java @@ -1,12 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadOAuth2ClientConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadPropertiesConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadResourceServerConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadWebApplicationConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.context.annotation.Configuration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadOAuth2ClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadOAuth2ClientConfiguration.java similarity index 53% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadOAuth2ClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadOAuth2ClientConfiguration.java index b21f127a8e80..9427cce0cf58 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadOAuth2ClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadOAuth2ClientConfiguration.java @@ -1,29 +1,27 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.configuration; - -import com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.conditions.ClientCertificatePropertiesCondition; -import com.azure.spring.cloud.autoconfigure.aad.implementation.conditions.ClientRegistrationCondition; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.AadJwtClientAuthenticationParametersConverter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AadOAuth2ClientAuthenticationJwkResolver; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.JacksonHttpSessionOAuth2AuthorizedClientRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.OAuth2ClientAuthenticationJwkResolver; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapi.AadJwtBearerGrantRequestEntityConverter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapp.AadAzureDelegatedOAuth2AuthorizedClientProvider; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapp.AadOidcIdTokenDecoderFactory; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadProfileProperties; -import com.nimbusds.jose.jwk.JWK; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions.ClientCertificatePropertiesCondition; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions.ClientRegistrationCondition; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadJwtClientAuthenticationParametersConverter; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadOAuth2ClientAuthenticationJwkResolver; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.JacksonHttpSessionOAuth2AuthorizedClientRepository; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.OAuth2ClientAuthenticationJwkResolver; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadJwtBearerGrantRequestEntityConverter; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadAzureDelegatedOAuth2AuthorizedClientProvider; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadOidcIdTokenDecoderFactory; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadProfileProperties; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2LoginConfigurer; import org.springframework.security.oauth2.client.JwtBearerOAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider; @@ -31,90 +29,49 @@ import org.springframework.security.oauth2.client.RefreshTokenOAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.endpoint.DefaultClientCredentialsTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.DefaultJwtBearerTokenResponseClient; -import org.springframework.security.oauth2.client.endpoint.DefaultPasswordTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.DefaultRefreshTokenTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequestEntityConverter; -import org.springframework.security.oauth2.client.endpoint.OAuth2PasswordGrantRequestEntityConverter; import org.springframework.security.oauth2.client.endpoint.OAuth2RefreshTokenGrantRequestEntityConverter; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository; -import org.springframework.security.oauth2.jwt.JwtDecoder; import org.springframework.security.oauth2.jwt.JwtDecoderFactory; -import org.springframework.web.client.RestTemplate; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createRestTemplate; -/** - *

- * The configuration will not be activated if no {@link ClientRegistration} classes provided. - *

- */ @Configuration(proxyBeanMethods = false) @Conditional(ClientRegistrationCondition.class) -public class AadOAuth2ClientConfiguration { +class AadOAuth2ClientConfiguration { private final RestTemplateBuilder restTemplateBuilder; - /** - * Creates a new instance of {@link AadOAuth2ClientConfiguration}. - * - * @param restTemplateBuilder the RestTemplateBuilder - */ - public AadOAuth2ClientConfiguration(RestTemplateBuilder restTemplateBuilder) { + AadOAuth2ClientConfiguration(RestTemplateBuilder restTemplateBuilder) { this.restTemplateBuilder = restTemplateBuilder; } - /** - * Declare ClientRegistrationRepository bean. - * - * @param properties the AAD authentication properties - * @return ClientRegistrationRepository bean - */ @Bean @ConditionalOnMissingBean - public ClientRegistrationRepository clientRegistrationRepository(AadAuthenticationProperties properties) { + ClientRegistrationRepository clientRegistrationRepository(AadAuthenticationProperties properties) { return new AadClientRegistrationRepository(properties); } - /** - * Declare OAuth2AuthorizedClientRepository bean. - * - * @return OAuth2AuthorizedClientRepository bean - */ @Bean @ConditionalOnMissingBean - public OAuth2AuthorizedClientRepository oAuth2AuthorizedClientRepository() { + OAuth2AuthorizedClientRepository oAuth2AuthorizedClientRepository() { return new JacksonHttpSessionOAuth2AuthorizedClientRepository(); } - /** - * Return the resolver to resolve a {@link JWK} through the {@link ClientRegistration}. - * - * @param properties the AAD authentication properties - * @return the function that will resolve out the JWK. - */ @Bean @ConditionalOnMissingBean @Conditional(ClientCertificatePropertiesCondition.class) OAuth2ClientAuthenticationJwkResolver oAuth2ClientAuthenticationJwkResolver(AadAuthenticationProperties properties) { return new AadOAuth2ClientAuthenticationJwkResolver( - properties.getCredential().getClientCertificatePath(), - properties.getCredential().getClientCertificatePassword()); + properties.getCredential().getClientCertificatePath(), + properties.getCredential().getClientCertificatePassword()); } - /** - * Declare OAuth2AuthorizedClientManager bean. - * - * @param clientRegistrations the client registration repository - * @param authorizedClients the OAuth2 authorized client repository - * @param refreshTokenProvider the refresh token grant type provider - * @param jwtBearerProvider the jwt bearer grant type provider - * @param jwkResolvers the {@link JWK} resolver - * @return OAuth2AuthorizedClientManager bean - */ @Bean @ConditionalOnMissingBean OAuth2AuthorizedClientManager authorizedClientManager( @@ -124,21 +81,20 @@ OAuth2AuthorizedClientManager authorizedClientManager( JwtBearerOAuth2AuthorizedClientProvider jwtBearerProvider, ObjectProvider jwkResolvers) { DefaultOAuth2AuthorizedClientManager manager = - new DefaultOAuth2AuthorizedClientManager(clientRegistrations, authorizedClients); + new DefaultOAuth2AuthorizedClientManager(clientRegistrations, authorizedClients); OAuth2ClientAuthenticationJwkResolver jwkResolver = jwkResolvers.getIfUnique(); // @formatter:off OAuth2AuthorizedClientProvider providers = - OAuth2AuthorizedClientProviderBuilder - .builder() - .authorizationCode() - .clientCredentials(builder -> - clientCredentialsGrantBuilderAccessTokenResponseClientCustomizer(builder, jwkResolver)) - .password(builder -> passwordGrantBuilderAccessTokenResponseClientCustomizer(builder, jwkResolver)) - .provider(refreshTokenProvider) - .provider(jwtBearerProvider) - .provider(azureDelegatedOAuth2AuthorizedClientProvider(refreshTokenProvider, authorizedClients)) - .build(); + OAuth2AuthorizedClientProviderBuilder + .builder() + .authorizationCode() + .clientCredentials(builder -> + clientCredentialsGrantBuilderAccessTokenResponseClientCustomizer(builder, jwkResolver)) + .provider(refreshTokenProvider) + .provider(jwtBearerProvider) + .provider(azureDelegatedOAuth2AuthorizedClientProvider(refreshTokenProvider, authorizedClients)) + .build(); // @formatter:on manager.setAuthorizedClientProvider(providers); return manager; @@ -178,13 +134,6 @@ RefreshTokenOAuth2AuthorizedClientProvider azureRefreshTokenProvider( return provider; } - /** - * Provide {@link JwtDecoderFactory} used in {@link OAuth2LoginConfigurer#init}. The {@link JwtDecoder} created by - * current {@link JwtDecoderFactory} will use {@link RestTemplate} created by {@link RestTemplateBuilder} bean. - * - * @param properties the AadAuthenticationProperties - * @return JwtDecoderFactory - */ @Bean @ConditionalOnMissingBean JwtDecoderFactory azureAdJwtDecoderFactory(AadAuthenticationProperties properties) { @@ -194,19 +143,6 @@ JwtDecoderFactory azureAdJwtDecoderFactory(AadAuthentication return new AadOidcIdTokenDecoderFactory(endpoints.getJwkSetEndpoint(), createRestTemplate(restTemplateBuilder)); } - private void passwordGrantBuilderAccessTokenResponseClientCustomizer( - OAuth2AuthorizedClientProviderBuilder.PasswordGrantBuilder builder, - OAuth2ClientAuthenticationJwkResolver resolver) { - DefaultPasswordTokenResponseClient client = new DefaultPasswordTokenResponseClient(); - client.setRestOperations(createOAuth2AccessTokenResponseClientRestTemplate(restTemplateBuilder)); - if (resolver != null) { - OAuth2PasswordGrantRequestEntityConverter converter = new OAuth2PasswordGrantRequestEntityConverter(); - converter.addParametersConverter(new AadJwtClientAuthenticationParametersConverter<>(resolver::resolve)); - client.setRequestEntityConverter(converter); - } - builder.accessTokenResponseClient(client); - } - private void clientCredentialsGrantBuilderAccessTokenResponseClientCustomizer( OAuth2AuthorizedClientProviderBuilder.ClientCredentialsGrantBuilder builder, OAuth2ClientAuthenticationJwkResolver resolver) { @@ -214,7 +150,7 @@ private void clientCredentialsGrantBuilderAccessTokenResponseClientCustomizer( client.setRestOperations(createOAuth2AccessTokenResponseClientRestTemplate(restTemplateBuilder)); if (resolver != null) { OAuth2ClientCredentialsGrantRequestEntityConverter converter = - new OAuth2ClientCredentialsGrantRequestEntityConverter(); + new OAuth2ClientCredentialsGrantRequestEntityConverter(); converter.addParametersConverter(new AadJwtClientAuthenticationParametersConverter<>(resolver::resolve)); client.setRequestEntityConverter(converter); } @@ -222,8 +158,8 @@ private void clientCredentialsGrantBuilderAccessTokenResponseClientCustomizer( } private AadAzureDelegatedOAuth2AuthorizedClientProvider azureDelegatedOAuth2AuthorizedClientProvider( - RefreshTokenOAuth2AuthorizedClientProvider refreshTokenProvider, - OAuth2AuthorizedClientRepository authorizedClients) { + RefreshTokenOAuth2AuthorizedClientProvider refreshTokenProvider, + OAuth2AuthorizedClientRepository authorizedClients) { return new AadAzureDelegatedOAuth2AuthorizedClientProvider(refreshTokenProvider, authorizedClients); } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadPropertiesConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadPropertiesConfiguration.java similarity index 69% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadPropertiesConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadPropertiesConfiguration.java index b5c8df6f9bc9..5d9720d42158 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadPropertiesConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadPropertiesConfiguration.java @@ -1,46 +1,31 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.configuration; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadResourceServerProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -/** - * Configure Azure Active Directory related property beans - */ @Configuration(proxyBeanMethods = false) @EnableConfigurationProperties -public class AadPropertiesConfiguration { +class AadPropertiesConfiguration { - /** - * Azure Global Properties. - */ private final AzureGlobalProperties global; - /** - * - * @param global Azure global properties. - */ AadPropertiesConfiguration(AzureGlobalProperties global) { this.global = global; } - /** - * AAD Authentication Properties. - * - * @return AAd Authentication Properties Bean - */ @Bean @ConfigurationProperties(AadAuthenticationProperties.PREFIX) @ConditionalOnMissingBean - public AadAuthenticationProperties aadAuthenticationProperties() { + AadAuthenticationProperties aadAuthenticationProperties() { AadAuthenticationProperties aad = new AadAuthenticationProperties(); aad.getProfile().setCloudType(global.getProfile().getCloudType()); aad.getProfile().getEnvironment().setActiveDirectoryEndpoint( @@ -55,12 +40,6 @@ public AadAuthenticationProperties aadAuthenticationProperties() { return aad; } - - /** - * AAD Resource Server Properties. - * - * @return AAd Resource Server Properties Bean - */ @Bean @ConfigurationProperties(AadResourceServerProperties.PREFIX) @ConditionalOnMissingBean diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadResourceServerConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadResourceServerConfiguration.java similarity index 55% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadResourceServerConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadResourceServerConfiguration.java index b6715fcf49b4..d4b299c70ca6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadResourceServerConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadResourceServerConfiguration.java @@ -1,14 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.configuration; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.conditions.ResourceServerCondition; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapi.validator.AadJwtIssuerValidator; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions.ResourceServerCondition; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadResourceServerProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt.AadJwtIssuerValidator; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.security.ConditionalOnDefaultWebSecurity; @@ -16,7 +17,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.oauth2.core.DelegatingOAuth2TokenValidator; @@ -26,48 +27,32 @@ import org.springframework.security.oauth2.jwt.JwtDecoder; import org.springframework.security.oauth2.jwt.JwtTimestampValidator; import org.springframework.security.oauth2.jwt.NimbusJwtDecoder; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadResourceServerHttpSecurityConfigurer.aadResourceServer; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createRestTemplate; -/** - *

- * The configuration will not be activated if no {@link BearerTokenAuthenticationToken} class provided. - *

- * By default, creating a JwtDecoder through JwkKeySetUri will be auto-configured. - */ @Configuration(proxyBeanMethods = false) @Conditional(ResourceServerCondition.class) -public class AadResourceServerConfiguration { +class AadResourceServerConfiguration { private final RestTemplateBuilder restTemplateBuilder; - /** - * Creates a new instance of {@link AadResourceServerConfiguration}. - * - * @param restTemplateBuilder the RestTemplateBuilder - */ - public AadResourceServerConfiguration(RestTemplateBuilder restTemplateBuilder) { + AadResourceServerConfiguration(RestTemplateBuilder restTemplateBuilder) { this.restTemplateBuilder = restTemplateBuilder; } - /** - * Use JwkKeySetUri to create JwtDecoder - * - * @param aadAuthenticationProperties the AAD properties - * @return Get the jwtDecoder instance - */ @Bean @ConditionalOnMissingBean(JwtDecoder.class) - public JwtDecoder jwtDecoder(AadAuthenticationProperties aadAuthenticationProperties) { + JwtDecoder jwtDecoder(AadAuthenticationProperties aadAuthenticationProperties) { AadAuthorizationServerEndpoints identityEndpoints = new AadAuthorizationServerEndpoints( aadAuthenticationProperties.getProfile().getEnvironment().getActiveDirectoryEndpoint(), aadAuthenticationProperties.getProfile().getTenantId()); NimbusJwtDecoder nimbusJwtDecoder = NimbusJwtDecoder - .withJwkSetUri(identityEndpoints.getJwkSetEndpoint()) + .withJwkSetUri(identityEndpoints.getJwkSetEndpoint()) .restOperations(createRestTemplate(restTemplateBuilder)) .build(); List> validators = createDefaultValidator(aadAuthenticationProperties); @@ -75,12 +60,7 @@ public JwtDecoder jwtDecoder(AadAuthenticationProperties aadAuthenticationProper return nimbusJwtDecoder; } - /** - * Creates a default validator. - * @param aadAuthenticationProperties the AAD properties - * @return a default validator - */ - public List> createDefaultValidator(AadAuthenticationProperties aadAuthenticationProperties) { + List> createDefaultValidator(AadAuthenticationProperties aadAuthenticationProperties) { List> validators = new ArrayList<>(); List validAudiences = new ArrayList<>(); if (StringUtils.hasText(aadAuthenticationProperties.getAppIdUri())) { @@ -97,27 +77,17 @@ public List> createDefaultValidator(AadAuthenticationP return validators; } - /** - * Default configuration class for using AAD authentication and authorization. User can write another configuration - * bean to override it. - */ @EnableWebSecurity - @EnableGlobalMethodSecurity(prePostEnabled = true) + @EnableMethodSecurity @ConditionalOnDefaultWebSecurity @ConditionalOnExpression("!'${spring.cloud.azure.active-directory.application-type}'.equalsIgnoreCase('web_application_and_resource_server')") - public static class DefaultAadResourceServerWebSecurityConfigurerAdapter extends - AadResourceServerWebSecurityConfigurerAdapter { + static class DefaultAadResourceServerConfiguration { - /** - * Configure the default Resource Server for Azure AD. - * - * @param http the {@link HttpSecurity} to use - * @throws Exception Configuration failed - * - */ - @Override - protected void configure(HttpSecurity http) throws Exception { - super.configure(http); + @Bean + @ConditionalOnBean(AadResourceServerProperties.class) + SecurityFilterChain defaultAadResourceServerFilterChain(HttpSecurity http) throws Exception { + http.apply(aadResourceServer()); + return http.build(); } } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadWebApplicationConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadWebApplicationConfiguration.java new file mode 100644 index 000000000000..72aac5bf76cd --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadWebApplicationConfiguration.java @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions.WebApplicationCondition; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadOAuth2UserService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.security.ConditionalOnDefaultWebSecurity; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest; +import org.springframework.security.oauth2.client.userinfo.OAuth2UserService; +import org.springframework.security.oauth2.core.oidc.user.OidcUser; +import org.springframework.security.web.SecurityFilterChain; + +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadWebApplicationHttpSecurityConfigurer.aadWebApplication; + +@Configuration(proxyBeanMethods = false) +@Conditional(WebApplicationCondition.class) +class AadWebApplicationConfiguration { + + private final RestTemplateBuilder restTemplateBuilder; + + AadWebApplicationConfiguration(RestTemplateBuilder restTemplateBuilder) { + this.restTemplateBuilder = restTemplateBuilder; + } + + @Bean + @ConditionalOnMissingBean + OAuth2UserService oidcUserService(AadAuthenticationProperties properties) { + return new AadOAuth2UserService(properties, restTemplateBuilder); + } + + @EnableWebSecurity + @EnableMethodSecurity + @ConditionalOnDefaultWebSecurity + @ConditionalOnExpression("!'${spring.cloud.azure.active-directory.application-type}'.equalsIgnoreCase('web_application_and_resource_server')") + static class DefaultAadWebSecurityConfiguration { + + @Bean + SecurityFilterChain defaultAadWebApplicationFilterChain(HttpSecurity http) throws Exception { + http + .apply(aadWebApplication()) + .and() + .authorizeHttpRequests() + .requestMatchers("/login").permitAll() + .anyRequest().authenticated(); + return http.build(); + } + } +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/AbstractApplicationTypeCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/AbstractApplicationTypeCondition.java similarity index 86% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/AbstractApplicationTypeCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/AbstractApplicationTypeCondition.java index 6872b4a7e2b2..7a380d352ab5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/AbstractApplicationTypeCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/AbstractApplicationTypeCondition.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; @@ -17,7 +17,7 @@ /** * Abstract class condition for each application type scenario. */ -public abstract class AbstractApplicationTypeCondition extends SpringBootCondition { +abstract class AbstractApplicationTypeCondition extends SpringBootCondition { /** * Check the applicationType satisfies the target application type. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientCertificatePropertiesCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientCertificatePropertiesCondition.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientCertificatePropertiesCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientCertificatePropertiesCondition.java index 878f8e5db37d..185659f9495f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientCertificatePropertiesCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientCertificatePropertiesCondition.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientRegistrationCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientRegistrationCondition.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientRegistrationCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientRegistrationCondition.java index 1fd072b3bcd8..eeb2da2e9021 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientRegistrationCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientRegistrationCondition.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; @@ -14,7 +14,7 @@ import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER; /** * Web application, web resource server or all in scenario condition. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ResourceServerCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ResourceServerCondition.java similarity index 52% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ResourceServerCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ResourceServerCondition.java index 57267df9a4e3..acf71f300283 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ResourceServerCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ResourceServerCondition.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType; import org.springframework.context.annotation.Condition; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER_WITH_OBO; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.WEB_APPLICATION_AND_RESOURCE_SERVER; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER_WITH_OBO; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.WEB_APPLICATION_AND_RESOURCE_SERVER; /** * {@link Condition} that checks for resource server scenario. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/WebApplicationCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/WebApplicationCondition.java similarity index 56% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/WebApplicationCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/WebApplicationCondition.java index c4a21963eee4..aa8de662b260 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/WebApplicationCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/WebApplicationCondition.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType; import org.springframework.context.annotation.Condition; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.WEB_APPLICATION; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.WEB_APPLICATION_AND_RESOURCE_SERVER; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.WEB_APPLICATION; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.WEB_APPLICATION_AND_RESOURCE_SERVER; /** * {@link Condition} that checks for Web application scenario. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadApplicationType.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadApplicationType.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadApplicationType.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadApplicationType.java index a1572ed6675f..bd2b6c54b75b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadApplicationType.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadApplicationType.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; import org.springframework.util.ClassUtils; @@ -61,7 +61,7 @@ public String getValue() { * The Spring security OAuth2 resource server class name */ public static final String SPRING_SECURITY_OAUTH2_RESOURCE_SERVER_CLASS_NAME = - "org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken"; + "org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken"; /** * Infer application type by dependencies diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthenticationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadAuthenticationProperties.java similarity index 80% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthenticationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadAuthenticationProperties.java index 0bf8f80e6555..1b07cf57889f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthenticationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadAuthenticationProperties.java @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AuthorizationClientProperties; import com.nimbusds.jose.jwk.source.RemoteJWKSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,22 +24,17 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.AZURE_DELEGATED; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.ON_BEHALF_OF; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER_WITH_OBO; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.WEB_APPLICATION; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.inferApplicationTypeByDependencies; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER_WITH_OBO; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.WEB_APPLICATION; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.inferApplicationTypeByDependencies; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.AZURE_DELEGATED; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.ON_BEHALF_OF; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; import static org.springframework.security.oauth2.core.AuthorizationGrantType.JWT_BEARER; import static org.springframework.security.oauth2.core.ClientAuthenticationMethod.CLIENT_SECRET_JWT; -/** - * Configuration properties for Azure Active Directory Authentication. - * - * @see InitializingBean - */ public class AadAuthenticationProperties implements InitializingBean { /** @@ -168,34 +164,18 @@ private static Map> initCompatib return nonCompatibleApplicationTypeAndGrantTypes; } - /** - * @return The AADProfileProperties. - */ public AadProfileProperties getProfile() { return profile; } - /** - * @return The AADCredentialProperties. - */ public AadCredentialProperties getCredential() { return credential; } - /** - * Gets the AADApplicationType. - * - * @return the AADApplicationType - */ public AadApplicationType getApplicationType() { return applicationType; } - /** - * Sets the AADApplicationType. - * - * @param applicationType the AADApplicationType - */ public void setApplicationType(AadApplicationType applicationType) { this.applicationType = applicationType; } @@ -221,67 +201,32 @@ public static class UserGroupProperties { */ private boolean useTransitiveMembers = false; - /** - * Gets the set of allowed group IDs. - * - * @return the set of allowed group IDs - */ public Set getAllowedGroupIds() { return allowedGroupIds; } - /** - * Set the allowed group IDs. - * - * @param allowedGroupIds Allowed group IDs. - */ public void setAllowedGroupIds(Set allowedGroupIds) { this.allowedGroupIds = allowedGroupIds; } - /** - * Gets the list of allowed group names. - * - * @return the list of allowed group names - */ public List getAllowedGroupNames() { return allowedGroupNames; } - /** - * Sets the list of allowed group names. - * - * @param allowedGroupNames the list of allowed group names - */ public void setAllowedGroupNames(List allowedGroupNames) { this.allowedGroupNames = allowedGroupNames; } - /** - * Whether transitive members are used. - * - * @return Whether transitive members are used. - */ public boolean isUseTransitiveMembers() { return useTransitiveMembers; } - /** - * Sets whether transitive members are used. - * - * @param useTransitiveMembers Whether transitive members are used. - */ public void setUseTransitiveMembers(boolean useTransitiveMembers) { this.useTransitiveMembers = useTransitiveMembers; } } - /** - * Whether allowed group names is configured. - * - * @return whether allowed group names is configured - */ public boolean isAllowedGroupNamesConfigured() { return Optional.of(this.getUserGroup()) .map(UserGroupProperties::getAllowedGroupNames) @@ -289,11 +234,6 @@ public boolean isAllowedGroupNamesConfigured() { .orElse(false); } - /** - * Whether allowed group IDs is configured. - * - * @return whether allowed group IDs is configured - */ public boolean isAllowedGroupIdsConfigured() { return Optional.of(this.getUserGroup()) .map(UserGroupProperties::getAllowedGroupIds) @@ -301,207 +241,94 @@ public boolean isAllowedGroupIdsConfigured() { .orElse(false); } - /** - * Gets the user group properties. - * - * @return the user group properties - */ public UserGroupProperties getUserGroup() { return userGroup; } - /** - * Gets the username attribute. - * - * @return the username attribute - */ public String getUserNameAttribute() { return userNameAttribute; } - /** - * Sets the username attribute. - * - * @param userNameAttribute the username attribute - */ public void setUserNameAttribute(String userNameAttribute) { this.userNameAttribute = userNameAttribute; } - /** - * Gets the redirect URI template. - * - * @return the redirect URI template - */ public String getRedirectUriTemplate() { return redirectUriTemplate; } - /** - * Sets the redirect URI template. - * - * @param redirectUriTemplate the redirect URI template - */ public void setRedirectUriTemplate(String redirectUriTemplate) { this.redirectUriTemplate = redirectUriTemplate; } - /** - * Gets the App ID URI. - * - * @return the App ID URI - */ public String getAppIdUri() { return appIdUri; } - /** - * Sets the App ID URI. - * - * @param appIdUri the App ID URI - */ public void setAppIdUri(String appIdUri) { this.appIdUri = appIdUri; } - /** - * Gets the additional authenticate parameters. - * - * @return the additional authenticate parameters - */ public Map getAuthenticateAdditionalParameters() { return authenticateAdditionalParameters; } - /** - * Gets the JWT connect timeout. - * - * @return the JWT connect timeout - */ public Duration getJwtConnectTimeout() { return jwtConnectTimeout; } - /** - * Sets the JWT connect timeout. - * - * @param jwtConnectTimeout the JWT connect timeout - */ public void setJwtConnectTimeout(Duration jwtConnectTimeout) { this.jwtConnectTimeout = jwtConnectTimeout; } - /** - * Gets the JWT read timeout. - * - * @return the JWT read timeout - */ public Duration getJwtReadTimeout() { return jwtReadTimeout; } - /** - * Sets the JWT read timeout. - * - * @param jwtReadTimeout the JWT read timeout - */ public void setJwtReadTimeout(Duration jwtReadTimeout) { this.jwtReadTimeout = jwtReadTimeout; } - /** - * Gets the JWT size limit. - * - * @return the JWT size limit - */ public int getJwtSizeLimit() { return jwtSizeLimit; } - /** - * Sets the JWT size limit. - * - * @param jwtSizeLimit the JWT size limit - */ public void setJwtSizeLimit(int jwtSizeLimit) { this.jwtSizeLimit = jwtSizeLimit; } - /** - * Gets the JWK set cache lifespan. - * - * @return the JWK set cache lifespan - */ public Duration getJwkSetCacheLifespan() { return jwkSetCacheLifespan; } - /** - * Sets the JWK set cache lifespan. - * - * @param jwkSetCacheLifespan the JWT set cache lifespan - */ public void setJwkSetCacheLifespan(Duration jwkSetCacheLifespan) { this.jwkSetCacheLifespan = jwkSetCacheLifespan; } - /** - * Gets the JWK set cache refresh time. - * - * @return the JWK set cache refresh time - */ public Duration getJwkSetCacheRefreshTime() { return jwkSetCacheRefreshTime; } - /** - * Sets the JWK set cache refresh time. - * - * @param jwkSetCacheRefreshTime the JWK set cache refresh time - */ public void setJwkSetCacheRefreshTime(Duration jwkSetCacheRefreshTime) { this.jwkSetCacheRefreshTime = jwkSetCacheRefreshTime; } - /** - * Gets the post logout redirect URI. - * - * @return the post logout redirect URI - */ public String getPostLogoutRedirectUri() { return postLogoutRedirectUri; } - /** - * Set the post logout redirect URI. - * - * @param postLogoutRedirectUri the post logout redirect URI - */ public void setPostLogoutRedirectUri(String postLogoutRedirectUri) { this.postLogoutRedirectUri = postLogoutRedirectUri; } - /** - * Whether the session is stateless. - * - * @return whether the session is stateless - */ public Boolean getSessionStateless() { return sessionStateless; } - /** - * Sets whether the session is stateless. - * - * @param sessionStateless whether the session is stateless - */ public void setSessionStateless(Boolean sessionStateless) { this.sessionStateless = sessionStateless; } - /** - * @return Graph membership uri. - */ public String getGraphMembershipUri() { return getProfile().getEnvironment().getMicrosoftGraphEndpoint() + (getUserGroup().isUseTransitiveMembers() @@ -509,21 +336,10 @@ public String getGraphMembershipUri() { : "v1.0/me/memberOf"); } - /** - * Gets the authorization clients. - * - * @return the authorization clients - */ public Map getAuthorizationClients() { return authorizationClients; } - /** - * Whether the group is allowed. - * - * @param group the group - * @return whether the group is allowed - */ public boolean isAllowedGroup(String group) { return Optional.ofNullable(getUserGroup()) .map(UserGroupProperties::getAllowedGroupNames) @@ -535,9 +351,6 @@ public boolean isAllowedGroup(String group) { .contains(group); } - /** - * Set after properties. - */ @Override public void afterPropertiesSet() { if (!StringUtils.hasText(getProfile().getTenantId())) { @@ -584,11 +397,6 @@ private void validateTenantId() { } } - /** - * Validate configured application type or set default value. - * - * @throws IllegalStateException Invalid property 'spring.cloud.azure.active-directory.application-type' - */ private void validateApplicationType() { AadApplicationType inferred = inferApplicationTypeByDependencies(); if (applicationType != null) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadCredentialProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadCredentialProperties.java similarity index 70% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadCredentialProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadCredentialProperties.java index 8d03b0abc457..a18676c70e60 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadCredentialProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadCredentialProperties.java @@ -1,11 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; -/** - * Properties used for authorize. - */ public class AadCredentialProperties { /** @@ -28,62 +25,34 @@ public class AadCredentialProperties { */ private String clientCertificatePassword; - /** - * - * @return The client ID. - */ public String getClientId() { return clientId; } - /** - * - * @param clientId The client ID. - */ public void setClientId(String clientId) { this.clientId = clientId; } - /** - * - * @return The client secret. - */ public String getClientSecret() { return clientSecret; } - /** - * - * @param clientSecret The client secret. - */ public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } - /** - * @return The client certificate path. - */ public String getClientCertificatePath() { return clientCertificatePath; } - /** - * @param clientCertificatePath The client certificate path. - */ public void setClientCertificatePath(String clientCertificatePath) { this.clientCertificatePath = clientCertificatePath; } - /** - * @return The client certificate password. - */ public String getClientCertificatePassword() { return clientCertificatePassword; } - /** - * @param clientCertificatePassword The client certificate password. - */ public void setClientCertificatePassword(String clientCertificatePassword) { this.clientCertificatePassword = clientCertificatePassword; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadProfileEnvironmentProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadProfileEnvironmentProperties.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadProfileEnvironmentProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadProfileEnvironmentProperties.java index 9cb0789dbc96..9a8edcf39f4a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadProfileEnvironmentProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadProfileEnvironmentProperties.java @@ -1,15 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; import com.azure.core.management.AzureEnvironment; import com.azure.spring.cloud.core.properties.profile.AzureProfileOptionsAdapter; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; -/** - * Properties to Azure Active Directory endpoints. - */ public class AadProfileEnvironmentProperties { /** @@ -21,42 +18,22 @@ public class AadProfileEnvironmentProperties { */ private String microsoftGraphEndpoint; - /** - * - * @return The Active Directory Endpoint. - */ public String getActiveDirectoryEndpoint() { return activeDirectoryEndpoint; } - /** - * - * @param activeDirectoryEndpoint The Active Directory Endpoint. - */ public void setActiveDirectoryEndpoint(String activeDirectoryEndpoint) { this.activeDirectoryEndpoint = addSlash(activeDirectoryEndpoint); } - /** - * - * @return The Microsoft Graph endpoint. - */ public String getMicrosoftGraphEndpoint() { return microsoftGraphEndpoint; } - /** - * - * @param microsoftGraphEndpoint The Microsoft Graph endpoint. - */ public void setMicrosoftGraphEndpoint(String microsoftGraphEndpoint) { this.microsoftGraphEndpoint = addSlash(microsoftGraphEndpoint); } - /** - * - * @param cloudType The cloud type. - */ public void updatePropertiesByCloudType(AzureProfileOptionsProvider.CloudType cloudType) { AzureEnvironment knownAzureEnvironment = AzureProfileOptionsAdapter.decideAzureManagementEnvironment(cloudType, AzureEnvironment.AZURE); if (this.activeDirectoryEndpoint == null) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadProfileProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadProfileProperties.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadProfileProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadProfileProperties.java index 1082212d8ec5..0c8993c5c349 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadProfileProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadProfileProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; @@ -9,9 +9,6 @@ -/** - * Profile of Azure cloud environment. - */ public class AadProfileProperties { /** * Azure Tenant ID. @@ -27,43 +24,23 @@ public class AadProfileProperties { @NestedConfigurationProperty private final AadProfileEnvironmentProperties environment = new AadProfileEnvironmentProperties(); - /** - * - * @return The tenant ID. - */ public String getTenantId() { return tenantId; } - /** - * - * @param tenantId The tenant ID. - */ public void setTenantId(String tenantId) { this.tenantId = tenantId; } - /** - * - * @return The cloud type. - */ public AzureProfileOptionsProvider.CloudType getCloudType() { return cloudType; } - /** - * - * @param cloudType The cloud type. - */ public void setCloudType(AzureProfileOptionsProvider.CloudType cloudType) { this.cloudType = cloudType; environment.updatePropertiesByCloudType(cloudType); } - /** - * - * @return The AADProfileEnvironmentProperties. - */ public AadProfileEnvironmentProperties getEnvironment() { return environment; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadResourceServerProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadResourceServerProperties.java similarity index 74% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadResourceServerProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadResourceServerProperties.java index a76a1b3bf031..733a6a28bd2e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadResourceServerProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadResourceServerProperties.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AuthorityPrefix; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AuthorityPrefix; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.StringUtils; @@ -12,11 +12,6 @@ import java.util.HashMap; import java.util.Map; -/** - * Configuration properties for Azure Active Directory B2C. - * - * @see InitializingBean - */ public class AadResourceServerProperties implements InitializingBean { /** @@ -47,45 +42,22 @@ public class AadResourceServerProperties implements InitializingBean { */ private Map claimToAuthorityPrefixMap; - /** - * Gets the principal claim name. - * - * @return the principal claim name - */ public String getPrincipalClaimName() { return principalClaimName; } - /** - * Sets the principal claim name. - * - * @param principalClaimName the principal claim name - */ public void setPrincipalClaimName(String principalClaimName) { this.principalClaimName = principalClaimName; } - /** - * Gets the claim to authority prefix map. - * - * @return the claim to authority prefix map - */ public Map getClaimToAuthorityPrefixMap() { return claimToAuthorityPrefixMap; } - /** - * Sets the claim to authority prefix map. - * - * @param claimToAuthorityPrefixMap the claim to authority prefix map - */ public void setClaimToAuthorityPrefixMap(Map claimToAuthorityPrefixMap) { this.claimToAuthorityPrefixMap = claimToAuthorityPrefixMap; } - /** - * Set after properties. - */ @Override public void afterPropertiesSet() { if (!StringUtils.hasText(principalClaimName)) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAppRoleStatelessAuthenticationFilter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAppRoleStatelessAuthenticationFilter.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAppRoleStatelessAuthenticationFilter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAppRoleStatelessAuthenticationFilter.java index f807cb28ba9c..450b7f423133 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAppRoleStatelessAuthenticationFilter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAppRoleStatelessAuthenticationFilter.java @@ -1,13 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AuthorityPrefix; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AuthorityPrefix; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.proc.BadJOSEException; import com.nimbusds.jwt.proc.BadJWTException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; @@ -20,10 +24,6 @@ import org.springframework.util.StringUtils; import org.springframework.web.filter.OncePerRequestFilter; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; import java.util.Collection; @@ -32,7 +32,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.DEFAULT_AUTHORITY_SET; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.DEFAULT_AUTHORITY_SET; /** * A stateless authentication filter which uses app roles feature of Azure Active Directory. Since it's a stateless diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilter.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilter.java index 576aa17a11cc..812a795f0f89 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilter.java @@ -1,18 +1,22 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.AadGraphClient; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import com.microsoft.aad.msal4j.MsalServiceException; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.jwk.source.JWKSetCache; import com.nimbusds.jose.proc.BadJOSEException; import com.nimbusds.jose.util.ResourceRetriever; import com.nimbusds.jwt.proc.BadJWTException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -25,17 +29,12 @@ import org.springframework.web.filter.OncePerRequestFilter; import javax.naming.ServiceUnavailableException; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import java.io.IOException; import java.net.MalformedURLException; import java.text.ParseException; import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.BEARER_PREFIX; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.BEARER_PREFIX; /** * A stateful authentication filter which uses Microsoft Graph groups to authorize. Both ID token and access token are diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/AadGraphClient.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadGraphClient.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/AadGraphClient.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadGraphClient.java index 0d7e493e6d72..294cf4e28bfe 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/AadGraphClient.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadGraphClient.java @@ -1,12 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; - -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AuthorityPrefix; -import com.azure.spring.cloud.autoconfigure.aad.implementation.util.JacksonObjectMapperFactory; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.Membership; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.Memberships; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AuthorityPrefix; +import com.azure.spring.cloud.autoconfigure.implementation.aad.utils.JacksonObjectMapperFactory; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import com.fasterxml.jackson.databind.ObjectMapper; import com.microsoft.aad.msal4j.ClientCredentialFactory; import com.microsoft.aad.msal4j.ConfidentialClientApplication; @@ -38,14 +40,14 @@ import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.DEFAULT_AUTHORITY_SET; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.DEFAULT_AUTHORITY_SET; /** * Microsoft Graph client encapsulation. */ -public class AadGraphClient { +class AadGraphClient { private static final Logger LOGGER = LoggerFactory.getLogger(AadGraphClient.class); private static final String MICROSOFT_GRAPH_SCOPE = "User.Read"; @@ -66,7 +68,7 @@ public class AadGraphClient { * @param aadAuthenticationProperties the AAD authentication properties * @param endpoints the AAF authorization server endpoints */ - public AadGraphClient(String clientId, + AadGraphClient(String clientId, String clientSecret, AadAuthenticationProperties aadAuthenticationProperties, AadAuthorizationServerEndpoints endpoints, diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipal.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipal.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipal.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipal.java index 842940fb63ba..8bcbd2a4be5b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipal.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipal.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import com.nimbusds.jose.JWSObject; import com.nimbusds.jwt.JWTClaimsSet; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManager.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManager.java index a3d2b1a9a4ed..010c0540bee1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManager.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.JWSAlgorithm; import com.nimbusds.jose.JWSObject; @@ -201,7 +201,7 @@ private ConfigurableJWTProcessor getValidator(JWSAlgorithm jwsA final JWSKeySelector keySelector = new JWSVerificationKeySelector<>(jwsAlgorithm, keySource); jwtProcessor.setJWSKeySelector(keySelector); //TODO: would it make sense to inject it? and make it configurable or even allow to provide own implementation - jwtProcessor.setJWTClaimsSetVerifier(new DefaultJWTClaimsVerifier() { + jwtProcessor.setJWTClaimsSetVerifier(new DefaultJWTClaimsVerifier(null, null) { @Override public void verify(JWTClaimsSet claimsSet, SecurityContext ctx) throws BadJWTException { super.verify(claimsSet, ctx); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAzureDelegatedOAuth2AuthorizedClientProvider.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAzureDelegatedOAuth2AuthorizedClientProvider.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAzureDelegatedOAuth2AuthorizedClientProvider.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAzureDelegatedOAuth2AuthorizedClientProvider.java index b952a61169c2..706a2aa7eaf2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAzureDelegatedOAuth2AuthorizedClientProvider.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAzureDelegatedOAuth2AuthorizedClientProvider.java @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.security.core.Authentication; import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException; import org.springframework.security.oauth2.client.OAuth2AuthorizationContext; @@ -19,15 +20,14 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.servlet.http.HttpServletRequest; import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.AZURE_DELEGATED; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.AZURE_DELEGATED; /** * A strategy for authorizing (or re-authorizing) an OAuth 2.0 Client. This implementation implement {@link diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadClientRegistrationRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadClientRegistrationRepository.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadClientRegistrationRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadClientRegistrationRepository.java index e558e113022b..6419144f60cd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadClientRegistrationRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadClientRegistrationRepository.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; -import com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AuthorizationClientProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.oauth2.client.registration.ClientRegistration; @@ -23,8 +23,8 @@ import java.util.Set; import java.util.stream.Collectors; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.AZURE_DELEGATED; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.ON_BEHALF_OF; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.AZURE_DELEGATED; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.ON_BEHALF_OF; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; import static org.springframework.security.oauth2.core.AuthorizationGrantType.JWT_BEARER; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadJwtBearerGrantRequestEntityConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadJwtBearerGrantRequestEntityConverter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java index fffaf601ceb8..605362b0098c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadJwtBearerGrantRequestEntityConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverter.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import org.springframework.security.oauth2.client.endpoint.JwtBearerGrantRequest; import org.springframework.security.oauth2.client.endpoint.JwtBearerGrantRequestEntityConverter; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtClientAuthenticationParametersConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtClientAuthenticationParametersConverter.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtClientAuthenticationParametersConverter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtClientAuthenticationParametersConverter.java index f6d14436cc83..8df76cee14ee 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtClientAuthenticationParametersConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtClientAuthenticationParametersConverter.java @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt.AadJwtEncoder; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.JWKSet; import com.nimbusds.jose.jwk.KeyType; @@ -68,6 +69,7 @@ public AadJwtClientAuthenticationParametersConverter(Function convert(T authorizationGrantRequest) { Assert.notNull(authorizationGrantRequest, "authorizationGrantRequest cannot be null"); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtGrantedAuthoritiesConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtGrantedAuthoritiesConverter.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtGrantedAuthoritiesConverter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtGrantedAuthoritiesConverter.java index f881a404d31b..e097cd954c4a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtGrantedAuthoritiesConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtGrantedAuthoritiesConverter.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,7 +17,7 @@ import java.util.Optional; import java.util.stream.Stream; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties.DEFAULT_CLAIM_TO_AUTHORITY_PREFIX_MAP; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadResourceServerProperties.DEFAULT_CLAIM_TO_AUTHORITY_PREFIX_MAP; /** * Extracts the {@link GrantedAuthority}s from scope attributes typically found in a {@link Jwt}. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2AuthorizationCodeGrantRequestEntityConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationCodeGrantRequestEntityConverter.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2AuthorizationCodeGrantRequestEntityConverter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationCodeGrantRequestEntityConverter.java index f658aff667ab..40e2469875e6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2AuthorizationCodeGrantRequestEntityConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationCodeGrantRequestEntityConverter.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import org.springframework.security.oauth2.client.endpoint.AbstractOAuth2AuthorizationGrantRequest; import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest; @@ -14,7 +13,7 @@ import java.util.Optional; import java.util.Set; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; /** * Used to set "scope" parameter when use "auth-code" to get "access_token". diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadOAuth2AuthorizationRequestResolver.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationRequestResolver.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadOAuth2AuthorizationRequestResolver.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationRequestResolver.java index 750167f82ec7..33f03aa1d07f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadOAuth2AuthorizationRequestResolver.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationRequestResolver.java @@ -1,18 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizationRequestResolver; import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter; import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestResolver; import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientAuthenticationJwkResolver.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2ClientAuthenticationJwkResolver.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientAuthenticationJwkResolver.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2ClientAuthenticationJwkResolver.java index e9dda163d104..62a34463a1cc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientAuthenticationJwkResolver.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2ClientAuthenticationJwkResolver.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.RSAKey; @@ -59,6 +59,7 @@ public AadOAuth2ClientAuthenticationJwkResolver(String clientCertificatePath, } @Override + @SuppressWarnings("deprecation") public JWK resolve(ClientRegistration clientRegistration) { if (ClientAuthenticationMethod.PRIVATE_KEY_JWT.equals(clientRegistration.getClientAuthenticationMethod())) { try (FileInputStream inputStream = new FileInputStream(clientCertificatePath)) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2UserService.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserService.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2UserService.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserService.java index 5bc2fea7e4bb..580170847f8e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2UserService.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserService.java @@ -1,13 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; - -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AuthorityPrefix; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.GraphClient; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.GroupInformation; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AuthorityPrefix; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.GraphClient; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.GroupInformation; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -28,7 +29,6 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.servlet.http.HttpSession; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -38,7 +38,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.DEFAULT_AUTHORITY_SET; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.DEFAULT_AUTHORITY_SET; /** * This implementation will retrieve group info of user from Microsoft Graph. Then map group to {@link diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOidcIdTokenDecoderFactory.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOidcIdTokenDecoderFactory.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOidcIdTokenDecoderFactory.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOidcIdTokenDecoderFactory.java index 37706fb26f0a..777c3c810941 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOidcIdTokenDecoderFactory.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOidcIdTokenDecoderFactory.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.core.oidc.OidcIdToken; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadResourceServerHttpSecurityConfigurer.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadResourceServerHttpSecurityConfigurer.java new file mode 100644 index 000000000000..69230356d767 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadResourceServerHttpSecurityConfigurer.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadResourceServerProperties; +import org.springframework.context.ApplicationContext; +import org.springframework.core.convert.converter.Converter; +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.config.annotation.SecurityConfigurer; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.oauth2.jwt.Jwt; +import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter; +import org.springframework.util.Assert; +import org.springframework.util.StringUtils; + +import java.util.Collection; + +/** + * HTTP security configurer class for Azure Active Directory resource server scenario, used to + * make {@link OAuth2ResourceServerConfigurer.JwtConfigurer } and {@link AadJwtGrantedAuthoritiesConverter} take effect. + * + */ +public class AadResourceServerHttpSecurityConfigurer extends AbstractHttpConfigurer { + + private AadResourceServerProperties properties; + + private Converter> jwtGrantedAuthoritiesConverter; + + @Override + public void init(HttpSecurity builder) throws Exception { + super.init(builder); + ApplicationContext context = builder.getSharedObject(ApplicationContext.class); + this.properties = context.getBean(AadResourceServerProperties.class); + // @formatter:off + builder.oauth2ResourceServer() + .jwt() + .jwtAuthenticationConverter(jwtAuthenticationConverter()); + // @formatter:off + } + + /** + * Default configurer for Resource Server with Azure AD. + * @return the configurer instance to customize the {@link SecurityConfigurer} + */ + public static AadResourceServerHttpSecurityConfigurer aadResourceServer() { + return new AadResourceServerHttpSecurityConfigurer(); + } + + private Converter jwtAuthenticationConverter() { + JwtAuthenticationConverter converter = new JwtAuthenticationConverter(); + if (StringUtils.hasText(properties.getPrincipalClaimName())) { + converter.setPrincipalClaimName(properties.getPrincipalClaimName()); + } + if (this.jwtGrantedAuthoritiesConverter != null) { + converter.setJwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter); + } else { + converter.setJwtGrantedAuthoritiesConverter( + new AadJwtGrantedAuthoritiesConverter(properties.getClaimToAuthorityPrefixMap())); + } + return converter; + } + + /** + * Custom a JWT granted authority converter. + * @param jwtGrantedAuthoritiesConverter the custom converter + * @return the AadResourceServerHttpSecurityConfigurer for further customizations + */ + public AadResourceServerHttpSecurityConfigurer jwtGrantedAuthoritiesConverter( + Converter> jwtGrantedAuthoritiesConverter) { + Assert.notNull(jwtGrantedAuthoritiesConverter, "jwtGrantedAuthoritiesConverter cannot be null"); + this.jwtGrantedAuthoritiesConverter = jwtGrantedAuthoritiesConverter; + return this; + } +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadWebSecurityConfigurerAdapter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadWebApplicationHttpSecurityConfigurer.java similarity index 61% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadWebSecurityConfigurerAdapter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadWebApplicationHttpSecurityConfigurer.java index 58c2b216dca7..0c1cf469d270 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadWebSecurityConfigurerAdapter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadWebApplicationHttpSecurityConfigurer.java @@ -1,17 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.AadJwtClientAuthenticationParametersConverter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.OAuth2ClientAuthenticationJwkResolver; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapp.AadOAuth2AuthorizationCodeGrantRequestEntityConverter; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import jakarta.servlet.Filter; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.ApplicationContext; +import org.springframework.core.ResolvableType; +import org.springframework.security.config.annotation.SecurityConfigurer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.oauth2.client.endpoint.DefaultAuthorizationCodeTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest; @@ -25,89 +25,100 @@ import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import org.springframework.util.StringUtils; -import javax.servlet.Filter; - -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; /** - * Abstract configuration class, used to make AzureClientRegistrationRepository and AuthzCodeGrantRequestEntityConverter - * take effect. - * - * @see WebSecurityConfigurerAdapter + * HTTP security configurer class for Azure Active Directory Web application scenario, used to + * make Azure client registration repository and OAuth2 request entity converter take effect. */ -public abstract class AadWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { +public class AadWebApplicationHttpSecurityConfigurer extends AbstractHttpConfigurer { /** * A repository for OAuth 2.0 / OpenID Connect 1.0 ClientRegistration(s). */ - @Autowired protected ClientRegistrationRepository repo; - /** * restTemplateBuilder bean used to create RestTemplate for Azure AD related http request. */ - @Autowired protected RestTemplateBuilder restTemplateBuilder; /** * OIDC user service. */ - @Autowired protected OAuth2UserService oidcUserService; /** * AAD authentication properties */ - @Autowired protected AadAuthenticationProperties properties; /** * JWK resolver implementation for client authentication. */ - @Autowired protected ObjectProvider jwkResolvers; /** - * configure - * - * @param http the {@link HttpSecurity} to use - * @throws Exception Configuration failed - * + * Conditional access filter, it's optional configuration. */ + private Filter conditionalAccessFilter; + @Override - protected void configure(HttpSecurity http) throws Exception { + public void init(HttpSecurity builder)throws Exception { + super.init(builder); + ApplicationContext context = builder.getSharedObject(ApplicationContext.class); + + this.repo = context.getBean(ClientRegistrationRepository.class); + this.properties = context.getBean(AadAuthenticationProperties.class); + this.restTemplateBuilder = context.getBean(RestTemplateBuilder.class); + + ObjectProvider> oidcUserServiceProvider = context.getBeanProvider( + ResolvableType.forClassWithGenerics(OAuth2UserService.class, OidcUserRequest.class, OidcUser.class)); + this.oidcUserService = oidcUserServiceProvider.getIfUnique(); + this.jwkResolvers = context.getBeanProvider(OAuth2ClientAuthenticationJwkResolver.class); + // @formatter:off - http.oauth2Login() - .authorizationEndpoint() - .authorizationRequestResolver(requestResolver()) - .and() - .tokenEndpoint() - .accessTokenResponseClient(accessTokenResponseClient()) - .and() - .userInfoEndpoint() + builder.oauth2Login() + .authorizationEndpoint() + .authorizationRequestResolver(requestResolver()) + .and() + .tokenEndpoint() + .accessTokenResponseClient(accessTokenResponseClient()) + .and() + .userInfoEndpoint() .oidcUserService(oidcUserService) + .and() .and() - .and() - .logout() - .logoutSuccessHandler(oidcLogoutSuccessHandler()); + .logout() + .logoutSuccessHandler(oidcLogoutSuccessHandler()); // @formatter:off + } - Filter conditionalAccessFilter = conditionalAccessFilter(); + @Override + public void configure(HttpSecurity builder) throws Exception { if (conditionalAccessFilter != null) { - http.addFilterAfter(conditionalAccessFilter, OAuth2AuthorizationRequestRedirectFilter.class); + builder.addFilterAfter(conditionalAccessFilter, OAuth2AuthorizationRequestRedirectFilter.class); } } /** - * Return the filter to handle conditional access exception. - * No conditional access filter is provided by default. + * Default configuer for Web Application with Azure AD. + * @return the configuer instance to customize the {@link SecurityConfigurer} + */ + public static AadWebApplicationHttpSecurityConfigurer aadWebApplication() { + return new AadWebApplicationHttpSecurityConfigurer(); + } + + /** + * Return the filter to handle conditional access exception. No conditional access filter is provided by default. + * @param conditionalAccessFilter the conditional access filter * @see Sample for AAD conditional access filter * @see reference doc * @return a filter that handles conditional access exception. */ - protected Filter conditionalAccessFilter() { - return null; + public AadWebApplicationHttpSecurityConfigurer conditionalAccessFilter(Filter conditionalAccessFilter) { + this.conditionalAccessFilter = conditionalAccessFilter; + return this; } /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter.java index eefe948c4e36..b8a5276bf57e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import org.springframework.http.HttpHeaders; @@ -17,7 +17,7 @@ * When using "auth-code" in AAD and AAD B2C, it's used to expand head and body parameters of the request. */ public abstract class AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter - extends OAuth2AuthorizationCodeGrantRequestEntityConverter { + extends OAuth2AuthorizationCodeGrantRequestEntityConverter { private static final MultiValueMap EMPTY_MULTI_VALUE_MAP = new MultiValueMapAdapter<>(Collections.emptyMap()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/JacksonHttpSessionOAuth2AuthorizedClientRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/JacksonHttpSessionOAuth2AuthorizedClientRepository.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/JacksonHttpSessionOAuth2AuthorizedClientRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/JacksonHttpSessionOAuth2AuthorizedClientRepository.java index 2a929e93d4ee..0cd1d7f82d09 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/JacksonHttpSessionOAuth2AuthorizedClientRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/JacksonHttpSessionOAuth2AuthorizedClientRepository.java @@ -1,23 +1,23 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jackson.SerializerUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson.SerializerUtils; import org.springframework.security.core.Authentication; import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository; import org.springframework.util.Assert; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.jackson.SerializerUtils.serializeOAuth2AuthorizedClientMap; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson.SerializerUtils.serializeOAuth2AuthorizedClientMap; /** * An implementation of an {@link OAuth2AuthorizedClientRepository} that stores {@link OAuth2AuthorizedClient}'s in the @@ -29,7 +29,7 @@ */ public class JacksonHttpSessionOAuth2AuthorizedClientRepository implements OAuth2AuthorizedClientRepository { private static final String AUTHORIZED_CLIENTS_ATTR_NAME = - JacksonHttpSessionOAuth2AuthorizedClientRepository.class.getName() + ".AUTHORIZED_CLIENTS"; + JacksonHttpSessionOAuth2AuthorizedClientRepository.class.getName() + ".AUTHORIZED_CLIENTS"; private static final String MSG_REQUEST_CANNOT_BE_NULL = "request cannot be null"; @@ -53,7 +53,7 @@ public void saveAuthorizedClient(OAuth2AuthorizedClient authorizedClient, Authen new HashMap<>(this.getAuthorizedClients(request)); authorizedClients.put(authorizedClient.getClientRegistration().getRegistrationId(), authorizedClient); request.getSession().setAttribute(AUTHORIZED_CLIENTS_ATTR_NAME, - serializeOAuth2AuthorizedClientMap(authorizedClients)); + serializeOAuth2AuthorizedClientMap(authorizedClients)); } @Override @@ -67,7 +67,7 @@ public void removeAuthorizedClient(String clientRegistrationId, Authentication p request.getSession().removeAttribute(AUTHORIZED_CLIENTS_ATTR_NAME); } else { request.getSession().setAttribute(AUTHORIZED_CLIENTS_ATTR_NAME, - serializeOAuth2AuthorizedClientMap(authorizedClients)); + serializeOAuth2AuthorizedClientMap(authorizedClients)); } } @@ -76,9 +76,9 @@ public void removeAuthorizedClient(String clientRegistrationId, Authentication p private Map getAuthorizedClients(HttpServletRequest request) { HttpSession session = request.getSession(false); return Optional.ofNullable(session) - .map(s -> s.getAttribute(AUTHORIZED_CLIENTS_ATTR_NAME)) - .map(Object::toString) - .map(SerializerUtils::deserializeOAuth2AuthorizedClientMap) - .orElse(Collections.emptyMap()); + .map(s -> s.getAttribute(AUTHORIZED_CLIENTS_ATTR_NAME)) + .map(Object::toString) + .map(SerializerUtils::deserializeOAuth2AuthorizedClientMap) + .orElse(Collections.emptyMap()); } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/OAuth2ClientAuthenticationJwkResolver.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/OAuth2ClientAuthenticationJwkResolver.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/OAuth2ClientAuthenticationJwkResolver.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/OAuth2ClientAuthenticationJwkResolver.java index 43011e3ba858..4373a025990c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/OAuth2ClientAuthenticationJwkResolver.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/OAuth2ClientAuthenticationJwkResolver.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import com.nimbusds.jose.jwk.JWK; import org.springframework.security.oauth2.client.registration.ClientRegistration; @@ -15,7 +15,7 @@ public interface OAuth2ClientAuthenticationJwkResolver { /** * @param clientRegistration the client registration. - * @return a a {@link JWK}. + * @return a {@link JWK}. */ JWK resolve(ClientRegistration clientRegistration); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/AadJwtClaimNames.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/AadJwtClaimNames.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/AadJwtClaimNames.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/AadJwtClaimNames.java index e4d53ced1ca5..707880881133 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/AadJwtClaimNames.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/AadJwtClaimNames.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.constants; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants; /** * Claim names in ID token or access token. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/AuthorityPrefix.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/AuthorityPrefix.java similarity index 86% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/AuthorityPrefix.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/AuthorityPrefix.java index af3bef465c1d..9e938586b827 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/AuthorityPrefix.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/AuthorityPrefix.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.constants; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants; /** * Authority prefix diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/Constants.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/Constants.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/Constants.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/Constants.java index 8fc40335512b..a9c787e01744 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/constants/Constants.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/constants/Constants.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.constants; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.oauth2.core.AuthorizationGrantType; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GraphClient.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GraphClient.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GraphClient.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GraphClient.java index 54cc72954cdc..ed6e55e2961e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GraphClient.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GraphClient.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -19,7 +19,7 @@ import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createRestTemplate; /** * GraphClient is used to access graph server. Mainly used to get groups information of a user. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GroupInformation.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GroupInformation.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GroupInformation.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GroupInformation.java index 780a4d61cce6..844d39442db9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GroupInformation.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GroupInformation.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph; import java.util.HashSet; import java.util.Set; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/Membership.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/Membership.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/Membership.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/Membership.java index f24256d3dfa2..3f28b86d417a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/Membership.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/Membership.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/Memberships.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/Memberships.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/Memberships.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/Memberships.java index 88443dfebcbe..e4b72069b298 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/Memberships.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/Memberships.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph; import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/RestOperationsResourceRetriever.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jose/RestOperationsResourceRetriever.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/RestOperationsResourceRetriever.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jose/RestOperationsResourceRetriever.java index 93634bc3e50a..e8baacc407ac 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/RestOperationsResourceRetriever.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jose/RestOperationsResourceRetriever.java @@ -1,14 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jose; import com.nimbusds.jose.util.Resource; import com.nimbusds.jose.util.ResourceRetriever; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.RequestEntity; import org.springframework.http.ResponseEntity; @@ -18,7 +17,7 @@ import java.net.URL; import java.util.Arrays; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createRestTemplate; /** * A ResourceRetriever that accepts an RestOperations as a constructor parameter. @@ -39,7 +38,7 @@ public Resource retrieveResource(URL url) throws IOException { HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON, APPLICATION_JWK_SET_JSON)); ResponseEntity response = getResponse(url, headers); - if (response.getStatusCodeValue() != HttpStatus.OK.value()) { + if (response.getStatusCode().isError()) { throw new IOException(response.toString()); } return new Resource(response.getBody(), "UTF-8"); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadIssuerJwsKeySelector.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadIssuerJwsKeySelector.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadIssuerJwsKeySelector.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadIssuerJwsKeySelector.java index 26dc063d5fd7..4f2da2536ba8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadIssuerJwsKeySelector.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadIssuerJwsKeySelector.java @@ -1,10 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; -import com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; import com.nimbusds.jose.JWSHeader; import com.nimbusds.jose.KeySourceException; import com.nimbusds.jose.jwk.source.JWKSource; @@ -24,7 +23,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createRestTemplate; /** * Selecting key candidates for processing a signed JWT which provides access to the JWT claims set in addition to the diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtDecoderProviderConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtDecoderProviderConfiguration.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtDecoderProviderConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtDecoderProviderConfiguration.java index f7fd43c3f327..f310a87d430b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtDecoderProviderConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtDecoderProviderConfiguration.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.RequestEntity; @@ -20,15 +20,11 @@ * Authorization Server Metadata Request based on * provided issuer and method invoked. */ -public final class AadJwtDecoderProviderConfiguration { - - private AadJwtDecoderProviderConfiguration() { - } +final class AadJwtDecoderProviderConfiguration { private static final String OIDC_METADATA_PATH = "/.well-known/openid-configuration"; private static final ParameterizedTypeReference> TYPE_REFERENCE = - new ParameterizedTypeReference>() { - }; + new ParameterizedTypeReference<>() {}; /** * Gets the configuration for OIDC issue location. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtEncoder.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtEncoder.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtEncoder.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtEncoder.java index 13bbf2626dd7..f77276bf4ca6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtEncoder.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtEncoder.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.JOSEObjectType; @@ -141,7 +141,7 @@ private static JWSSigner createSigner(JWK jwk) { } } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "deprecation"}) private static JWSHeader convertHeader(Map headers) { JWSHeader.Builder builder = new JWSHeader.Builder(JWSAlgorithm.parse((String) headers.get("alg"))); Map jwk = (Map) headers.get("jwk"); @@ -149,7 +149,7 @@ private static JWSHeader convertHeader(Map headers) { try { builder.jwk(JWK.parse(jwk)); } catch (Exception ex) { - throw new JwtException(String.format(ENCODING_ERROR_MESSAGE_TEMPLATE, + throw new JwtException(String.format(ENCODING_ERROR_MESSAGE_TEMPLATE, "Unable to convert 'jku' JOSE header"), ex); } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/validator/AadJwtIssuerValidator.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtIssuerValidator.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/validator/AadJwtIssuerValidator.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtIssuerValidator.java index 964562783f6a..6aaea487f2e9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/validator/AadJwtIssuerValidator.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtIssuerValidator.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi.validator; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; -import com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; import org.springframework.security.oauth2.core.OAuth2TokenValidator; import org.springframework.security.oauth2.core.OAuth2TokenValidatorResult; import org.springframework.security.oauth2.jwt.Jwt; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadTrustedIssuerRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadTrustedIssuerRepository.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadTrustedIssuerRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadTrustedIssuerRepository.java index e4e2a50ba539..7255c8278ef0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/AadTrustedIssuerRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadTrustedIssuerRepository.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthorizationServerEndpoints.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthorizationServerEndpoints.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java index 7f89232cbc4a..ca5c53af3e44 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthorizationServerEndpoints.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AadAuthorizationServerEndpoints.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties; import com.nimbusds.oauth2.sdk.util.StringUtils; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AuthorizationClientProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AuthorizationClientProperties.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AuthorizationClientProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AuthorizationClientProperties.java index 00ff8ff699a7..2260621bc3ba 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/properties/AuthorizationClientProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/properties/AuthorizationClientProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties; import org.springframework.security.oauth2.core.AuthorizationGrantType; import org.springframework.security.oauth2.core.ClientAuthenticationMethod; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadClientRegistrationDeserializer.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadClientRegistrationDeserializer.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadClientRegistrationDeserializer.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadClientRegistrationDeserializer.java index bd5af2f6a424..fabd56d5b7a8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadClientRegistrationDeserializer.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadClientRegistrationDeserializer.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jackson; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; @@ -15,7 +15,7 @@ import java.io.IOException; -public class AadClientRegistrationDeserializer extends JsonDeserializer { +class AadClientRegistrationDeserializer extends JsonDeserializer { private static final StdConverter CLIENT_AUTHENTICATION_METHOD_CONVERTER = new StdConverters.ClientAuthenticationMethodConverter(); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadClientRegistrationMixin.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadClientRegistrationMixin.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadClientRegistrationMixin.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadClientRegistrationMixin.java index 06ad28dc6a95..b8d2d242e241 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadClientRegistrationMixin.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadClientRegistrationMixin.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jackson; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadOAuth2ClientJackson2Module.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadOAuth2ClientJackson2Module.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadOAuth2ClientJackson2Module.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadOAuth2ClientJackson2Module.java index 3fc7cd82e499..0e9bfd66e139 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/AadOAuth2ClientJackson2Module.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/AadOAuth2ClientJackson2Module.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jackson; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.module.SimpleModule; @@ -9,11 +9,11 @@ /** * Jackson {@code Module} for ClientRegistration */ -public class AadOAuth2ClientJackson2Module extends SimpleModule { +class AadOAuth2ClientJackson2Module extends SimpleModule { private static final long serialVersionUID = 30_80_00L; - public AadOAuth2ClientJackson2Module() { + AadOAuth2ClientJackson2Module() { super(AadOAuth2ClientJackson2Module.class.getName(), new Version(3, 8, 0, null, null, null)); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/JsonNodeUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/JsonNodeUtils.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/JsonNodeUtils.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/JsonNodeUtils.java index fad5dc5cd818..eb7897cfed3a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/JsonNodeUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/JsonNodeUtils.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jackson; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/SerializerUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/SerializerUtils.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/SerializerUtils.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/SerializerUtils.java index 16616fafb63b..cb6fb358a3b6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/SerializerUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/SerializerUtils.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jackson; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; @@ -15,9 +15,7 @@ public final class SerializerUtils { private static final ObjectMapper OBJECT_MAPPER; - private static final TypeReference> TYPE_REFERENCE = - new TypeReference>() { - }; + private static final TypeReference> TYPE_REFERENCE = new TypeReference<>() { }; static { OBJECT_MAPPER = new ObjectMapper(); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/StdConverters.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/StdConverters.java similarity index 81% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/StdConverters.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/StdConverters.java index c78b6604b25c..f5eac1d19ddb 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jackson/StdConverters.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/StdConverters.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jackson; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.util.StdConverter; @@ -8,7 +8,7 @@ import org.springframework.security.oauth2.core.AuthorizationGrantType; import org.springframework.security.oauth2.core.ClientAuthenticationMethod; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.ON_BEHALF_OF; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.ON_BEHALF_OF; final class StdConverters { @@ -22,12 +22,10 @@ static final class ClientAuthenticationMethodConverter extends StdConverter azureAdJwtDecoderFactory() { + return new AadB2cOidcIdTokenDecoderFactory(createRestTemplate(restTemplateBuilder)); + } +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/configuration/AadB2cOAuth2ClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cOAuth2ClientConfiguration.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/configuration/AadB2cOAuth2ClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cOAuth2ClientConfiguration.java index c3b2f79b8f27..9e45d2d5ba5c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/configuration/AadB2cOAuth2ClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cOAuth2ClientConfiguration.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.configuration; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cClientRegistrationRepository; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cConditions; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cUrl; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AuthorizationClientProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.AadB2cClientRegistrationRepository; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.conditions.AadB2cConditions; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.AadB2cUrl; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AuthorizationClientProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -21,10 +21,8 @@ import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder; -import org.springframework.security.oauth2.client.PasswordOAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.RefreshTokenOAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.endpoint.DefaultClientCredentialsTokenResponseClient; -import org.springframework.security.oauth2.client.endpoint.DefaultPasswordTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.DefaultRefreshTokenTokenResponseClient; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; @@ -39,7 +37,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; /** * Configuration for AAD B2C OAuth2 client support, when depends on the Spring OAuth2 Client module. @@ -49,30 +47,20 @@ @Conditional(AadB2cConditions.ClientRegistrationCondition.class) @Import(AadB2cPropertiesConfiguration.class) @ConditionalOnClass({ OAuth2LoginAuthenticationFilter.class }) -public class AadB2cOAuth2ClientConfiguration { +class AadB2cOAuth2ClientConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(AadB2cOAuth2ClientConfiguration.class); private final AadB2cProperties properties; private final RestTemplateBuilder restTemplateBuilder; - /** - * Creates a new instance of {@link AadB2cOAuth2ClientConfiguration}. - * - * @param properties the AAD B2C properties - * @param restTemplateBuilder the restTemplateBuilder - */ - public AadB2cOAuth2ClientConfiguration(AadB2cProperties properties, RestTemplateBuilder restTemplateBuilder) { + AadB2cOAuth2ClientConfiguration(AadB2cProperties properties, RestTemplateBuilder restTemplateBuilder) { this.properties = properties; this.restTemplateBuilder = restTemplateBuilder; } - /** - * Declare ClientRegistrationRepository bean. - * @return ClientRegistrationRepository bean - */ @Bean @ConditionalOnMissingBean - public ClientRegistrationRepository clientRegistrationRepository() { + ClientRegistrationRepository clientRegistrationRepository() { Stream clientRegistrationStream = properties.getUserFlows() .entrySet() .stream() @@ -98,7 +86,7 @@ private ClientRegistration buildUserFlowClientRegistration(Map.Entry aadIssuerJwsKeySelector( + JWTClaimsSetAwareJWSKeySelector aadIssuerJwsKeySelector( AadTrustedIssuerRepository aadTrustedIssuerRepository, ResourceRetriever resourceRetriever) { return new AadIssuerJwsKeySelector( @@ -102,32 +78,18 @@ public JWTClaimsSetAwareJWSKeySelector aadIssuerJwsKeySelector( resourceRetriever); } - /** - * Declare JWTProcessor bean. - * - * @param keySelector the JWT claims set aware JWS key selector - * @return JWTProcessor bean - */ @Bean @ConditionalOnMissingBean - public JWTProcessor jwtProcessor( - JWTClaimsSetAwareJWSKeySelector keySelector) { + JWTProcessor jwtProcessor(JWTClaimsSetAwareJWSKeySelector keySelector) { ConfigurableJWTProcessor jwtProcessor = new DefaultJWTProcessor<>(); jwtProcessor.setJWTClaimsSetAwareJWSKeySelector(keySelector); return jwtProcessor; } - /** - * Declare JwtDecoder bean. - * - * @param jwtProcessor the JWT processor - * @param trustedIssuerRepository the AAD trusted issuer repository - * @return JwtDecoder bean - */ @Bean @ConditionalOnMissingBean - public JwtDecoder jwtDecoder(JWTProcessor jwtProcessor, - AadTrustedIssuerRepository trustedIssuerRepository) { + JwtDecoder jwtDecoder(JWTProcessor jwtProcessor, + AadTrustedIssuerRepository trustedIssuerRepository) { NimbusJwtDecoder decoder = new NimbusJwtDecoder(jwtProcessor); List> validators = new ArrayList<>(); List validAudiences = new ArrayList<>(); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConditions.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/conditions/AadB2cConditions.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConditions.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/conditions/AadB2cConditions.java index 10b0e65062cb..7cde5e5b9769 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConditions.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/conditions/AadB2cConditions.java @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.conditions; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cCredentialProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cCredentialProperties.java similarity index 72% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cCredentialProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cCredentialProperties.java index aeb6ebc92fff..c4ff579fc2d9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cCredentialProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cCredentialProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties; /** * Properties used for authorize. @@ -18,34 +18,18 @@ public class AadB2cCredentialProperties { */ private String clientSecret; - /** - * - * @return The client ID. - */ public String getClientId() { return clientId; } - /** - * - * @param clientId The client ID. - */ public void setClientId(String clientId) { this.clientId = clientId; } - /** - * - * @return The client secret. - */ public String getClientSecret() { return clientSecret; } - /** - * - * @param clientSecret The client secret. - */ public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cProfileProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cProfileProperties.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cProfileProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cProfileProperties.java index 66fd7d28ef73..50006c460ccb 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cProfileProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cProfileProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties; /** * Profile of Azure cloud environment. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cProperties.java similarity index 76% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cProperties.java index 841333592390..c4a211f454dd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AadB2cProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AadB2cProperties.java @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cConfigurationException; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.exception.AadB2cConfigurationException; import com.nimbusds.jose.jwk.source.RemoteJWKSet; import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.context.properties.NestedConfigurationProperty; @@ -134,9 +134,6 @@ public void afterPropertiesSet() { validateCommonProperties(); } - /** - * Validate web app scenario properties configuration when using user flows. - */ private void validateWebappProperties() { if (!CollectionUtils.isEmpty(userFlows)) { if (!StringUtils.hasText(baseUri)) { @@ -149,9 +146,6 @@ private void validateWebappProperties() { } } - /** - * Validate common scenario properties configuration. - */ private void validateCommonProperties() { boolean usingClientCredentialFlow = authorizationClients.values() .stream() @@ -163,9 +157,6 @@ private void validateCommonProperties() { } } - /** - * Validate URL properties configuration. - */ private void validateURLProperties() { if (!isValidUrl(logoutSuccessUrl)) { throw new AadB2cConfigurationException("logout success should be valid URL."); @@ -175,11 +166,6 @@ private void validateURLProperties() { } } - /** - * Used to validate uri, the uri is allowed to be empty. - * @param uri the uri to be validated. - * @return whether is uri is valid or not. - */ private static boolean isValidUrl(String uri) { if (!StringUtils.hasLength(uri)) { return true; @@ -193,11 +179,6 @@ private static boolean isValidUrl(String uri) { } - /** - * Gets the password reset. - * - * @return the password reset - */ public String getPasswordReset() { return userFlows.entrySet().stream() .filter(entry -> entry.getKey().equalsIgnoreCase(DEFAULT_KEY_PASSWORD_RESET)) @@ -206,218 +187,98 @@ public String getPasswordReset() { .orElse(null); } - /** - * Gets the base URI. - * - * @return the base URI - */ public String getBaseUri() { return baseUri; } - /** - * Sets the base URI. - * - * @param baseUri the base URI - */ public void setBaseUri(String baseUri) { this.baseUri = baseUri; } - /** - * Gets the user flows. - * - * @return the user flows - */ public Map getUserFlows() { return userFlows; } - /** - * Sets the user flows. - * - * @param userFlows the user flows - */ public void setUserFlows(Map userFlows) { this.userFlows = userFlows; } - /** - * Gets the login flow. - * - * @return the login flow - */ public String getLoginFlow() { return loginFlow; } - /** - * Sets the login flow. - * - * @param loginFlow the login flow - */ public void setLoginFlow(String loginFlow) { this.loginFlow = loginFlow; } - /** - * Gets the credential. - * - * @return the credential. - */ public AadB2cCredentialProperties getCredential() { return credential; } - /** - * Gets the logout success URL. - * - * @return the logout success URL - */ public String getLogoutSuccessUrl() { return logoutSuccessUrl; } - /** - * Sets the logout success URL. - * - * @param logoutSuccessUrl the logout success URL - */ public void setLogoutSuccessUrl(String logoutSuccessUrl) { this.logoutSuccessUrl = logoutSuccessUrl; } - /** - * Gets the additional authenticate parameters. - * - * @return the additional authenticate parameters - */ public Map getAuthenticateAdditionalParameters() { return authenticateAdditionalParameters; } - /** - * Gets the username attribute name. - * - * @return the username attribute name - */ public String getUserNameAttributeName() { return userNameAttributeName; } - /** - * Sets the username attribute name. - * - * @param userNameAttributeName the username attribute name - */ public void setUserNameAttributeName(String userNameAttributeName) { this.userNameAttributeName = userNameAttributeName; } - /** - * Gets the reply URL. - * - * @return the reply URL - */ public String getReplyUrl() { return replyUrl; } - /** - * Sets the reply URL. - * - * @param replyUrl the reply URL - */ public void setReplyUrl(String replyUrl) { this.replyUrl = replyUrl; } - /** - * Gets the app ID URI. - * - * @return the app ID URI - */ public String getAppIdUri() { return appIdUri; } - /** - * Sets the app ID URI. - * - * @param appIdUri the app ID URI. - */ public void setAppIdUri(String appIdUri) { this.appIdUri = appIdUri; } - /** - * Gets the JWT connect timeout. - * - * @return the JWT connect timeout - */ public Duration getJwtConnectTimeout() { return jwtConnectTimeout; } - /** - * Sets the JWT connect timeout. - * - * @param jwtConnectTimeout the JWT connect timeout - */ public void setJwtConnectTimeout(Duration jwtConnectTimeout) { this.jwtConnectTimeout = jwtConnectTimeout; } - /** - * Get the JWT read timeout. - * - * @return the JWT read timeout - */ public Duration getJwtReadTimeout() { return jwtReadTimeout; } - /** - * Sets the JWT read timeout. - * - * @param jwtReadTimeout the JWT read timeout - */ public void setJwtReadTimeout(Duration jwtReadTimeout) { this.jwtReadTimeout = jwtReadTimeout; } - /** - * Gets the JWT size limit. - * - * @return the JWT size limit - */ public int getJwtSizeLimit() { return jwtSizeLimit; } - /** - * Sets the JWT size limit. - * - * @param jwtSizeLimit the JWT size limit - */ public void setJwtSizeLimit(int jwtSizeLimit) { this.jwtSizeLimit = jwtSizeLimit; } - /** - * Gets the profile. - * - * @return the profile - */ public AadB2cProfileProperties getProfile() { return profile; } - /** - * Gets the authorization clients. - * - * @return the authorization clients - */ public Map getAuthorizationClients() { return authorizationClients; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AuthorizationClientProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AuthorizationClientProperties.java similarity index 62% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AuthorizationClientProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AuthorizationClientProperties.java index 2b893d5da4e1..28b66b24cb5c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/properties/AuthorizationClientProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/properties/AuthorizationClientProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties; import org.springframework.security.oauth2.core.AuthorizationGrantType; @@ -16,38 +16,18 @@ public class AuthorizationClientProperties { private AuthorizationGrantType authorizationGrantType; - /** - * Gets the authorization grant type. - * - * @return the authorization grant type - */ public AuthorizationGrantType getAuthorizationGrantType() { return authorizationGrantType; } - /** - * Sets the authorization grant type. - * - * @param authorizationGrantType the authorization grant type - */ public void setAuthorizationGrantType(AuthorizationGrantType authorizationGrantType) { this.authorizationGrantType = authorizationGrantType; } - /** - * Sets the list of scopes. - * - * @param scopes the list of scopes - */ public void setScopes(List scopes) { this.scopes = scopes; } - /** - * Gets the list of scopes. - * - * @return the list of scopes - */ public List getScopes() { return scopes; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cAuthorizationRequestResolver.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cAuthorizationRequestResolver.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cAuthorizationRequestResolver.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cAuthorizationRequestResolver.java index 758fa831ed70..517df75e3250 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cAuthorizationRequestResolver.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cAuthorizationRequestResolver.java @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizationRequestResolver; import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter; @@ -12,7 +13,6 @@ import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cClientRegistrationRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cClientRegistrationRepository.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cClientRegistrationRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cClientRegistrationRepository.java index 6b0ace682a52..c639011dfed2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cClientRegistrationRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cClientRegistrationRepository.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cLogoutSuccessHandler.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cLogoutSuccessHandler.java similarity index 83% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cLogoutSuccessHandler.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cLogoutSuccessHandler.java index 2f5bc1e80858..3577cdbb1b37 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cLogoutSuccessHandler.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cLogoutSuccessHandler.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cUrl; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter.java similarity index 71% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter.java index 9dd1b78bd05a..5588f24a5af4 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AbstractOAuth2AuthorizationCodeGrantRequestEntityConverter; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cOidcIdTokenDecoderFactory.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOidcIdTokenDecoderFactory.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cOidcIdTokenDecoderFactory.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOidcIdTokenDecoderFactory.java index 33c545132b65..c611869e4611 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cOidcIdTokenDecoderFactory.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOidcIdTokenDecoderFactory.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.core.OAuth2AuthenticationException; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cOidcLoginConfigurer.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOidcLoginConfigurer.java similarity index 81% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cOidcLoginConfigurer.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOidcLoginConfigurer.java index 8be50cf3526e..1c824324faf6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cOidcLoginConfigurer.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cOidcLoginConfigurer.java @@ -1,8 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; -import com.azure.spring.cloud.autoconfigure.aadb2c.implementation.AadB2cOAuth2AuthorizationCodeGrantRequestEntityConverter; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; @@ -12,7 +11,7 @@ import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestResolver; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; /** * Configure B2C OAUTH2 login properties. @@ -47,8 +46,8 @@ public AadB2cOidcLoginConfigurer(AadB2cLogoutSuccessHandler handler, AadB2cAutho * @param accessTokenResponseClient the AAD B2C access token response client */ public AadB2cOidcLoginConfigurer(LogoutSuccessHandler handler, - OAuth2AuthorizationRequestResolver resolver, - OAuth2AccessTokenResponseClient accessTokenResponseClient) { + OAuth2AuthorizationRequestResolver resolver, + OAuth2AccessTokenResponseClient accessTokenResponseClient) { this(handler, resolver, accessTokenResponseClient, null); } @@ -62,9 +61,9 @@ public AadB2cOidcLoginConfigurer(LogoutSuccessHandler handler, * It will be used only when accessTokenResponseClient is null. */ public AadB2cOidcLoginConfigurer(LogoutSuccessHandler handler, - OAuth2AuthorizationRequestResolver resolver, - OAuth2AccessTokenResponseClient accessTokenResponseClient, - RestTemplateBuilder restTemplateBuilder) { + OAuth2AuthorizationRequestResolver resolver, + OAuth2AccessTokenResponseClient accessTokenResponseClient, + RestTemplateBuilder restTemplateBuilder) { this.handler = handler; this.resolver = resolver; this.accessTokenResponseClient = accessTokenResponseClient; @@ -83,12 +82,12 @@ public void init(HttpSecurity http) throws Exception { http.logout() .logoutSuccessHandler(handler) .and() - .oauth2Login() + .oauth2Login() .authorizationEndpoint() - .authorizationRequestResolver(resolver) - .and() + .authorizationRequestResolver(resolver) + .and() .tokenEndpoint() - .accessTokenResponseClient(accessTokenResponseClient()); + .accessTokenResponseClient(accessTokenResponseClient()); // @formatter:on } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUrl.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cUrl.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUrl.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cUrl.java index ef8162d17594..2e421cced3a0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUrl.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cUrl.java @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.exception.AadB2cConfigurationException; import org.springframework.util.Assert; import java.io.UnsupportedEncodingException; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConfigurationException.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/exception/AadB2cConfigurationException.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConfigurationException.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/exception/AadB2cConfigurationException.java index 40bcc7e0929a..e09e4a6bb091 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConfigurationException.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/exception/AadB2cConfigurationException.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.exception; /** * Throw runtime exception for configuration. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cTrustedIssuerRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/jwt/AadB2cTrustedIssuerRepository.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cTrustedIssuerRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/jwt/AadB2cTrustedIssuerRepository.java index 869361ee06a1..8b15a1a9f23b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aadb2c/AadB2cTrustedIssuerRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/jwt/AadB2cTrustedIssuerRepository.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.jwt; -import com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt.AadTrustedIssuerRepository; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; import org.springframework.util.Assert; import java.util.Map; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/appconfiguration/AzureAppConfigurationAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/appconfiguration/AzureAppConfigurationAutoConfiguration.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/appconfiguration/AzureAppConfigurationAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/appconfiguration/AzureAppConfigurationAutoConfiguration.java index cb8f9f21af7f..7c9cf6bee863 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/appconfiguration/AzureAppConfigurationAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/appconfiguration/AzureAppConfigurationAutoConfiguration.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.appconfiguration; +package com.azure.spring.cloud.autoconfigure.implementation.appconfiguration; import com.azure.data.appconfiguration.ConfigurationAsyncClient; import com.azure.data.appconfiguration.ConfigurationClient; import com.azure.data.appconfiguration.ConfigurationClientBuilder; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; @@ -44,25 +43,15 @@ AzureAppConfigurationProperties azureAppConfigurationProperties() { return loadProperties(getAzureGlobalProperties(), new AzureAppConfigurationProperties()); } - /** - * Autoconfigure the {@link ConfigurationClient} instance. - * @param builder The {@link ConfigurationClientBuilder} to build the instance. - * @return the configuration client instance. - */ @Bean @ConditionalOnMissingBean - public ConfigurationClient azureConfigurationClient(ConfigurationClientBuilder builder) { + ConfigurationClient azureConfigurationClient(ConfigurationClientBuilder builder) { return builder.buildClient(); } - /** - * Autoconfigure the {@link ConfigurationAsyncClient} instance. - * @param builder The {@link ConfigurationClientBuilder} to build the instance. - * @return the configuration async client instance. - */ @Bean @ConditionalOnMissingBean - public ConfigurationAsyncClient azureConfigurationAsyncClient(ConfigurationClientBuilder builder) { + ConfigurationAsyncClient azureConfigurationAsyncClient(ConfigurationClientBuilder builder) { return builder.buildAsyncClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityNotMetException.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityNotMetException.java index 29b650204a52..3419f00a3c93 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityNotMetException.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityNotMetException.java @@ -12,10 +12,6 @@ public class AzureCompatibilityNotMetException extends RuntimeException { private final List results; - /** - * Constructor of {@link AzureCompatibilityNotMetException} - * @param results VerificationResult List - */ public AzureCompatibilityNotMetException(List results) { super("Spring Cloud Azure/ Spring Boot version compatibility checks have failed: " + Arrays.toString(results.toArray())); this.results = results; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityVerifierAutoConfiguration.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityVerifierAutoConfiguration.java index 0ceb5f0b7f85..3d31fc22f309 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityVerifierAutoConfiguration.java @@ -1,10 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.compatibility; +package com.azure.spring.cloud.autoconfigure.implementation.compatibility; -import com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureSpringBootVersionVerifier; -import com.azure.spring.cloud.autoconfigure.implementation.compatibility.ClassNameResolverPredicate; +import com.azure.spring.cloud.autoconfigure.implementation.compatibility.properties.AzureCompatibilityVerifierProperties; import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -18,7 +17,7 @@ * @since 4.0.0 */ @Configuration(proxyBeanMethods = false) -@ConditionalOnProperty(value = "spring.cloud.azure.compatibility-verifier.enabled", matchIfMissing = true) +@ConditionalOnProperty(value = "spring.cloud.azure.compatibility-verifier.enabled") @AutoConfigureOrder @EnableConfigurationProperties(AzureCompatibilityVerifierProperties.class) public class AzureCompatibilityVerifierAutoConfiguration { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifier.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifier.java index 74560f366618..a882b70d7f3b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifier.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifier.java @@ -18,22 +18,17 @@ public class AzureSpringBootVersionVerifier { private static final Logger LOGGER = LoggerFactory.getLogger(AzureSpringBootVersionVerifier.class); - static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5 = "org.springframework.boot.context.properties.bind" - + ".Bindable.BindRestriction"; - - static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6 = "org.springframework.boot.autoconfigure.data.redis" - + ".ClientResourcesBuilderCustomizer"; - - static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_7 = "org.springframework.boot.autoconfigure.amqp" - + ".RabbitStreamTemplateConfigurer"; - + static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0 = "org.springframework.boot.autoconfigure.validation.ValidationConfigurationCustomizer"; + static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_1 = "org.springframework.boot.autoconfigure.validation.ValidationConfigurationCustomizer.ValidationConfigurationCustomizer,setIgnoreRegistrationFailure,"; + static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_2 = "org.springframework.boot.autoconfigure.web.client.RestClientSsl"; + static final String SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_3 = "org.springframework.boot.autoconfigure.ldap.PropertiesLdapConnectionDetails"; /** - * Versions supported by Spring Cloud Azure, for present is [2.5, 2.6, 2.7]. Update this value if needed. + * Versions supported by Spring Cloud Azure, for present is [3.0, 3.1, 3.2, 3.3]. Update this value if needed. */ private final Map supportedVersions = new HashMap<>(); /** - * Versionsspecified in the configuration or environment. + * Versions specified in the configuration or environment. */ private final List acceptedVersions; @@ -50,9 +45,10 @@ public AzureSpringBootVersionVerifier(List acceptedVersions, ClassNameRe * Init default supported Spring Boot Version compatibility check meta data. */ private void initDefaultSupportedBootVersionCheckMeta() { - supportedVersions.put("2.5", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5); - supportedVersions.put("2.6", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6); - supportedVersions.put("2.7", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_7); + supportedVersions.put("3.0", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0); + supportedVersions.put("3.1", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_1); + supportedVersions.put("3.2", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_2); + supportedVersions.put("3.3", SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_3); } /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicate.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicate.java index 3ec30e389706..bd588b22f921 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicate.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicate.java @@ -10,11 +10,33 @@ boolean resolve(String fullyQualifiedClassName) { if (fullyQualifiedClassName == null) { return false; } - - Class.forName(fullyQualifiedClassName); + if (fullyQualifiedClassName.contains(",")) { + String[] stringNames = fullyQualifiedClassName.split(","); + if (stringNames.length > 2) { + Class[] params = new Class[stringNames.length - 2]; + for (int i = 2; i < stringNames.length; i++) { + if (stringNames[i].equals("int")) { + params[i - 2] = int.class; + continue; + } + if (stringNames[i].equals("boolean")) { + params[i - 2] = boolean.class; + continue; + } + params[i - 2] = Class.forName(stringNames[i]); + } + Class.forName(stringNames[0]).getMethod(stringNames[1], params); + } else { + Class.forName(stringNames[0]).getMethod(stringNames[1]); + } + } else { + Class.forName(fullyQualifiedClassName); + } return true; } catch (ClassNotFoundException ex) { return false; + } catch (NoSuchMethodException ex) { + return false; } } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/properties/AzureCompatibilityVerifierProperties.java similarity index 55% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/properties/AzureCompatibilityVerifierProperties.java index 3e1197d98c99..25b600e7f8eb 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/properties/AzureCompatibilityVerifierProperties.java @@ -1,16 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.compatibility; +package com.azure.spring.cloud.autoconfigure.implementation.compatibility.properties; import org.springframework.boot.context.properties.ConfigurationProperties; import java.util.Arrays; import java.util.List; -/** - * Properties for CompatibilityVerifier - */ @ConfigurationProperties("spring.cloud.azure.compatibility-verifier") public class AzureCompatibilityVerifierProperties { @@ -21,36 +18,20 @@ public class AzureCompatibilityVerifierProperties { /** * Comma-delimited list of Spring Boot versions that are compatible with current Spring Cloud Azure's version. */ - private List compatibleBootVersions = Arrays.asList("2.5.x", "2.6.x", "2.7.x"); + private List compatibleBootVersions = Arrays.asList("3.0.x", "3.1.x", "3.2.x", "3.3.x"); - /** - * Whether to enable the Spring Cloud Azure compatibility verifier. - * @return whether to enable the Spring Cloud Azure compatibility verifier. - */ public boolean isEnabled() { return this.enabled; } - /** - * Set whether to enable the Spring Cloud Azure compatibility verifier. - * @param enabled whether to enable the Spring Cloud Azure compatibility verifier. - */ public void setEnabled(boolean enabled) { this.enabled = enabled; } - /** - * Get the list of Spring Boot versions that are compatible with current Spring Cloud Azure's version. - * @return the compatible Spring Boot versions. - */ public List getCompatibleBootVersions() { return this.compatibleBootVersions; } - /** - * Set the list of Spring Boot versions that are compatible with current Spring Cloud Azure's version. - * @param compatibleBootVersions the compatible Spring Boot versions. - */ public void setCompatibleBootVersions(List compatibleBootVersions) { this.compatibleBootVersions = compatibleBootVersions; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnAnyProperty.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnAnyProperty.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnAnyProperty.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnAnyProperty.java index 1c63f1e0652d..b745e8a29cab 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnAnyProperty.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnAnyProperty.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.condition; +package com.azure.spring.cloud.autoconfigure.implementation.condition; import org.springframework.context.annotation.Conditional; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnMissingProperty.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnMissingProperty.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnMissingProperty.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnMissingProperty.java index 8f307f4afc3a..61bc30e98147 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnMissingProperty.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnMissingProperty.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.condition; +package com.azure.spring.cloud.autoconfigure.implementation.condition; import org.springframework.context.annotation.Conditional; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/OnAnyPropertyCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/OnAnyPropertyCondition.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/OnAnyPropertyCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/OnAnyPropertyCondition.java index e36ab7d6d457..67bfd7f7cef2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/OnAnyPropertyCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/OnAnyPropertyCondition.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.condition; +package com.azure.spring.cloud.autoconfigure.implementation.condition; import com.azure.spring.cloud.core.implementation.util.AzureStringUtils; import org.springframework.boot.autoconfigure.condition.ConditionMessage; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/OnMissingPropertyCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/OnMissingPropertyCondition.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/OnMissingPropertyCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/OnMissingPropertyCondition.java index c5980516790d..942b56646751 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/OnMissingPropertyCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/OnMissingPropertyCondition.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.condition; +package com.azure.spring.cloud.autoconfigure.implementation.condition; import com.azure.spring.cloud.core.implementation.util.AzureStringUtils; import org.springframework.boot.autoconfigure.condition.ConditionMessage; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/PropertyCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/PropertyCondition.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/PropertyCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/PropertyCondition.java index 8878bb46b624..11b660f83a95 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/condition/PropertyCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/condition/PropertyCondition.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.condition; +package com.azure.spring.cloud.autoconfigure.implementation.condition; import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureContextUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureContextUtils.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureContextUtils.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureContextUtils.java index 6d5a48da2396..381b8cf6de90 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureContextUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureContextUtils.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; /** * Azure Context utilities. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalConfigurationEnvironmentPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessor.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalConfigurationEnvironmentPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessor.java index 39d06fb33f6c..b7342a2dc7bc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalConfigurationEnvironmentPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessor.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; import org.apache.commons.logging.Log; import org.springframework.boot.SpringApplication; @@ -34,26 +34,15 @@ import static com.azure.core.util.Configuration.PROPERTY_AZURE_USERNAME; import static com.azure.core.util.Configuration.PROPERTY_NO_PROXY; -/** - * An EnvironmentPostProcessor to convert environment variables predefined by Azure Core and Azure SDKs to Azure Spring - * properties, and add a property source for them as well. - */ public class AzureGlobalConfigurationEnvironmentPostProcessor implements EnvironmentPostProcessor, Ordered { private final Log logger; - /** - * Creates a new instance of {@link AzureGlobalConfigurationEnvironmentPostProcessor}. - * @param logger The logger used in this class. - */ public AzureGlobalConfigurationEnvironmentPostProcessor(Log logger) { this.logger = logger; AzureCoreEnvMapping.setLogger(logger); } - /** - * Construct a {@link AzureGlobalConfigurationEnvironmentPostProcessor} instance with default value. - */ public AzureGlobalConfigurationEnvironmentPostProcessor() { this.logger = new DeferredLog(); AzureCoreEnvMapping.setLogger(logger); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalPropertiesAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalPropertiesAutoConfiguration.java similarity index 73% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalPropertiesAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalPropertiesAutoConfiguration.java index e1683cb874fb..c169fbb1c6c4 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalPropertiesAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalPropertiesAutoConfiguration.java @@ -1,9 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter; import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.beans.factory.support.RegisteredBean; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.context.EnvironmentAware; @@ -12,7 +15,7 @@ import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotationMetadata; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.AZURE_GLOBAL_PROPERTY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.AZURE_GLOBAL_PROPERTY_BEAN_NAME; import static org.springframework.beans.factory.support.BeanDefinitionBuilder.genericBeanDefinition; /** @@ -45,4 +48,13 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, } } + + static class AzureGlobalPropertiesBeanRegistrationExcludeFilter implements BeanRegistrationExcludeFilter { + + @Override + public boolean isExcludedFromAotProcessing(RegisteredBean registeredBean) { + return AZURE_GLOBAL_PROPERTY_BEAN_NAME.equals(registeredBean.getBeanName()); + } + + } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureTokenCredentialAutoConfiguration.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureTokenCredentialAutoConfiguration.java index 22ef73d4ff8d..6cbc1a6d3b88 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureTokenCredentialAutoConfiguration.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; import com.azure.core.credential.TokenCredential; -import com.azure.core.management.AzureEnvironment; import com.azure.identity.ClientCertificateCredentialBuilder; import com.azure.identity.ClientSecretCredentialBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.identity.ManagedIdentityCredentialBuilder; import com.azure.identity.UsernamePasswordCredentialBuilder; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.core.AbstractAzureHttpConfigurationProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver; @@ -39,9 +39,9 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.util.StringUtils; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_CREDENTIAL_TASK_EXECUTOR_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_CREDENTIAL_THREAD_NAME_PREFIX; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_CREDENTIAL_TASK_EXECUTOR_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_CREDENTIAL_THREAD_NAME_PREFIX; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Cloud Azure default {@link TokenCredential}. @@ -101,11 +101,7 @@ AzureTokenCredentialResolver azureTokenCredentialResolver( final String tenantId = azureProperties.getProfile().getTenantId(); final String clientId = properties.getClientId(); final boolean isClientIdSet = StringUtils.hasText(clientId); - String authorityHost = azureProperties.getProfile().getEnvironment().getActiveDirectoryEndpoint(); - - if (authorityHost == null) { - authorityHost = AzureEnvironment.AZURE.getActiveDirectoryEndpoint(); - } + final String authorityHost = azureProperties.getProfile().getEnvironment().getActiveDirectoryEndpoint(); if (StringUtils.hasText(tenantId)) { @@ -223,9 +219,6 @@ ThreadPoolTaskExecutor credentialTaskExecutor() { .build(); } - /** - * Apply the default token credential to service client builder factory. - */ static class AzureServiceClientBuilderFactoryPostProcessor implements BeanPostProcessor, BeanFactoryAware { private BeanFactory beanFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/properties/AzureGlobalProperties.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/properties/AzureGlobalProperties.java index ecd8a3fa78b5..4980a01888e6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/context/properties/AzureGlobalProperties.java @@ -1,15 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context.properties; import com.azure.core.amqp.AmqpTransportType; -import com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.client.ClientConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.client.HttpLoggingConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.retry.RetryConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.ClientConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.HttpLoggingConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.ProxyConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.RetryConfigurationProperties; import com.azure.spring.cloud.core.properties.AzureProperties; import com.azure.spring.cloud.core.properties.client.HeaderProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cosmos/AzureCosmosAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/AzureCosmosAutoConfiguration.java similarity index 76% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cosmos/AzureCosmosAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/AzureCosmosAutoConfiguration.java index 2d511ed11599..5e922d51ddf2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/cosmos/AzureCosmosAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/AzureCosmosAutoConfiguration.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.cosmos; import com.azure.cosmos.CosmosAsyncClient; import com.azure.cosmos.CosmosClient; import com.azure.cosmos.CosmosClientBuilder; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -41,26 +41,16 @@ AzureCosmosProperties azureCosmosProperties() { return loadProperties(getAzureGlobalProperties(), new AzureCosmosProperties()); } - /** - * Autoconfigure the {@link CosmosClient} instance. - * @param builder the {@link CosmosClientBuilder} to build the instance. - * @return the cosmos client instance. - */ @Bean @ConditionalOnMissingBean - public CosmosClient azureCosmosClient(CosmosClientBuilder builder) { + CosmosClient azureCosmosClient(CosmosClientBuilder builder) { return builder.buildClient(); } - /** - * Autoconfigure the {@link CosmosAsyncClient} instance. - * @param builder the {@link CosmosClientBuilder} to build the instance. - * @return the cosmos async client instance. - */ @Bean @ConditionalOnMissingBean // TODO (xiada): spring data cosmos also defines a CosmosAsyncClient - public CosmosAsyncClient azureCosmosAsyncClient(CosmosClientBuilder builder) { + CosmosAsyncClient azureCosmosAsyncClient(CosmosClientBuilder builder) { return builder.buildAsyncClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/properties/AzureCosmosProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/properties/AzureCosmosProperties.java index 92161f77c24e..5ccb0da5029d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/properties/AzureCosmosProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/properties/AzureCosmosProperties.java @@ -7,8 +7,8 @@ import com.azure.cosmos.ConsistencyLevel; import com.azure.cosmos.ThrottlingRetryOptions; import com.azure.spring.cloud.autoconfigure.implementation.properties.core.AbstractAzureServiceConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.ClientConfigurationProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.HttpProxyConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.client.ClientConfigurationProperties; import com.azure.spring.cloud.service.implementation.cosmos.CosmosClientProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataAutoConfiguration.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataAutoConfiguration.java index 7d9fd3aa94cb..08db851a060e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataAutoConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; import com.azure.spring.data.cosmos.config.AbstractCosmosConfiguration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataDiagnosticsConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataDiagnosticsConfiguration.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataDiagnosticsConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataDiagnosticsConfiguration.java index 477ab15735e3..f1693e8d55b8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataDiagnosticsConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataDiagnosticsConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.data.cosmos.core.ResponseDiagnosticsProcessor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfiguration.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfiguration.java index ced0e7c6e17f..bcd2c31ec6dc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.data.cosmos.core.ReactiveCosmosTemplate; import com.azure.spring.data.cosmos.repository.ReactiveCosmosRepository; @@ -22,12 +22,12 @@ @ConditionalOnClass({ ReactiveCosmosRepository.class }) @ConditionalOnMissingBean({ ReactiveCosmosRepositoryFactoryBean.class, ReactiveCosmosRepositoryConfigurationExtension.class }) -@AutoConfigureAfter(CosmosDataAutoConfiguration.class) +@AutoConfigureAfter(com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.CosmosDataAutoConfiguration.class) @ConditionalOnBean(ReactiveCosmosTemplate.class) @ConditionalOnProperty(prefix = "spring.cloud.azure.cosmos.repositories", - name = "enabled", - havingValue = "true", - matchIfMissing = true) + name = "enabled", + havingValue = "true", + matchIfMissing = true) @Import(CosmosReactiveRepositoriesAutoConfigureRegistrar.class) public class CosmosReactiveRepositoriesAutoConfiguration { } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfigureRegistrar.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfigureRegistrar.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfigureRegistrar.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfigureRegistrar.java index cdaa92a74da4..72dce2511efd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfigureRegistrar.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfigureRegistrar.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.data.cosmos.repository.config.EnableReactiveCosmosRepositories; import com.azure.spring.data.cosmos.repository.config.ReactiveCosmosRepositoryConfigurationExtension; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfiguration.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfiguration.java index 0de7cad62615..50b7ee48f8af 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.data.cosmos.core.CosmosTemplate; import com.azure.spring.data.cosmos.repository.CosmosRepository; @@ -22,12 +22,12 @@ @ConditionalOnClass({ CosmosRepository.class }) @ConditionalOnMissingBean({ CosmosRepositoryFactoryBean.class, CosmosRepositoryConfigurationExtension.class }) -@AutoConfigureAfter(CosmosDataAutoConfiguration.class) +@AutoConfigureAfter(com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.CosmosDataAutoConfiguration.class) @ConditionalOnBean(CosmosTemplate.class) @ConditionalOnProperty(prefix = "spring.cloud.azure.cosmos.repositories", - name = "enabled", - havingValue = "true", - matchIfMissing = true) + name = "enabled", + havingValue = "true", + matchIfMissing = true) @Import(CosmosRepositoriesAutoConfigureRegistrar.class) public class CosmosRepositoriesAutoConfiguration { } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfigureRegistrar.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfigureRegistrar.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfigureRegistrar.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfigureRegistrar.java index 35756905926f..44f82926c665 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfigureRegistrar.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfigureRegistrar.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.data.cosmos.repository.config.CosmosRepositoryConfigurationExtension; import com.azure.spring.data.cosmos.repository.config.EnableCosmosRepositories; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfiguration.java new file mode 100644 index 000000000000..07ca86c1308a --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfiguration.java @@ -0,0 +1,85 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.data.redis; + +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureRedisPasswordlessProperties; +import com.azure.spring.cloud.autoconfigure.implementation.data.redis.lettuce.AzureRedisCredentials; +import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; +import io.lettuce.core.ClientOptions; +import io.lettuce.core.RedisCredentials; +import io.lettuce.core.RedisCredentialsProvider; +import io.lettuce.core.protocol.ProtocolVersion; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConfiguration; +import org.springframework.data.redis.connection.RedisSentinelConfiguration; +import org.springframework.data.redis.connection.lettuce.LettuceConnection; +import org.springframework.data.redis.connection.lettuce.RedisCredentialsProviderFactory; +import reactor.core.publisher.Mono; + + +/** + * Azure Redis passwordless connection configuration using Lettuce. + * + * @since 5.13.0 + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnClass({LettuceConnection.class, RedisCredentials.class}) +@ConditionalOnExpression("${spring.data.redis.azure.passwordless-enabled:false}") +@AutoConfigureBefore(RedisAutoConfiguration.class) +@ConditionalOnProperty(prefix = "spring.data.redis", name = {"host"}) +@EnableConfigurationProperties(RedisProperties.class) +public class AzureLettucePasswordlessAutoConfiguration { + + @Bean + @ConfigurationProperties(prefix = "spring.data.redis.azure") + AzureRedisPasswordlessProperties redisPasswordlessProperties() { + return new AzureRedisPasswordlessProperties(); + } + + @Bean(name = "azureRedisCredentials") + @ConditionalOnMissingBean + AzureRedisCredentials azureRedisCredentials(RedisProperties redisProperties, + AzureRedisPasswordlessProperties azureRedisPasswordlessProperties, + AzureGlobalProperties azureGlobalProperties) { + return new AzureRedisCredentials(redisProperties.getUsername(), + mergeAzureProperties(azureGlobalProperties, azureRedisPasswordlessProperties)); + } + + @Bean(name = "azureLettuceClientConfigurationBuilderCustomizer") + @ConditionalOnMissingBean + LettuceClientConfigurationBuilderCustomizer azureLettuceClientConfigurationBuilderCustomizer(AzureRedisCredentials azureRedisCredentials) { + return builder -> builder.redisCredentialsProviderFactory(new RedisCredentialsProviderFactory() { + + @Override + public RedisCredentialsProvider createCredentialsProvider(RedisConfiguration redisConfiguration) { + return () -> Mono.just(azureRedisCredentials); + } + + @Override + public RedisCredentialsProvider createSentinelCredentialsProvider(RedisSentinelConfiguration redisConfiguration) { + return () -> Mono.just(azureRedisCredentials); + } + }).clientOptions(ClientOptions.builder().protocolVersion(ProtocolVersion.RESP2).build()); + } + + private AzureRedisPasswordlessProperties mergeAzureProperties(AzureGlobalProperties azureGlobalProperties, + AzureRedisPasswordlessProperties azurePasswordlessProperties) { + AzureRedisPasswordlessProperties mergedProperties = new AzureRedisPasswordlessProperties(); + AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(azureGlobalProperties, azurePasswordlessProperties, mergedProperties); + return mergedProperties; + } + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/lettuce/AzureRedisCredentials.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/lettuce/AzureRedisCredentials.java new file mode 100644 index 000000000000..1007e02da34b --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/lettuce/AzureRedisCredentials.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.data.redis.lettuce; + +import com.azure.core.credential.TokenCredential; +import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; +import com.azure.spring.cloud.core.properties.PasswordlessProperties; +import io.lettuce.core.RedisCredentials; + +import java.util.Objects; + +public class AzureRedisCredentials implements RedisCredentials { + + private final AzureAuthenticationTemplate azureAuthenticationTemplate; + private final String username; + + /** + * Create instance of Azure Redis Credentials + * @param username the username to be used for authentication. + */ + public AzureRedisCredentials(String username, PasswordlessProperties passwordlessProperties) { + Objects.requireNonNull(username, "Username is required"); + Objects.requireNonNull(passwordlessProperties, "PasswordlessProperties is required"); + this.username = username; + azureAuthenticationTemplate = new AzureAuthenticationTemplate(); + azureAuthenticationTemplate.init(passwordlessProperties.toPasswordlessProperties()); + } + + public AzureRedisCredentials(String username, PasswordlessProperties passwordlessProperties, TokenCredential tokenCredential) { + Objects.requireNonNull(username, "Username is required"); + Objects.requireNonNull(passwordlessProperties, "PasswordlessProperties is required"); + Objects.requireNonNull(tokenCredential, "TokenCredential is required"); + this.username = username; + this.azureAuthenticationTemplate = new AzureAuthenticationTemplate(() -> tokenCredential, null); + this.azureAuthenticationTemplate.init(passwordlessProperties.toPasswordlessProperties()); + } + + @Override + public String getUsername() { + return username; + } + + @Override + public boolean hasUsername() { + return username != null; + } + + @Override + public char[] getPassword() { + return azureAuthenticationTemplate.getTokenAsPassword().toCharArray(); + } + + @Override + public boolean hasPassword() { + return true; + } +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfiguration.java index e3852878de6c..614eeb1f14a4 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfiguration.java @@ -9,9 +9,9 @@ import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient; import com.azure.messaging.eventgrid.EventGridPublisherClient; import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventgrid.properties.AzureEventGridProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureBlobCheckpointStoreConfiguration.java similarity index 85% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureBlobCheckpointStoreConfiguration.java index 3e3c6556c964..16fd2746bb4d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureBlobCheckpointStoreConfiguration.java @@ -1,10 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore; +import com.azure.spring.cloud.service.eventhubs.BlobCheckpointStoreContainerInitializer; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -23,8 +24,8 @@ import java.time.Duration; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_FACTORY_BEAN_NAME; /** * Configures a {@link BlobCheckpointStore} @@ -32,7 +33,7 @@ @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ BlobCheckpointStore.class, EventHubClientBuilder.class}) @ConditionalOnProperty(prefix = "spring.cloud.azure.eventhubs.processor.checkpoint-store", name = { "container-name", "account-name" }) -public class AzureBlobCheckpointStoreConfiguration { +class AzureBlobCheckpointStoreConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(AzureBlobCheckpointStoreConfiguration.class); @@ -51,13 +52,9 @@ BlobCheckpointStore blobCheckpointStore( return new BlobCheckpointStore(blobContainerAsyncClient); } - /** - * The default {@link BlobCheckpointStoreContainerInitializer} to create the storage blob if not exists. - * @return the default {@link BlobCheckpointStoreContainerInitializer}. - */ @Bean @ConditionalOnProperty(value = "spring.cloud.azure.eventhubs.processor.checkpoint-store.create-container-if-not-exists", havingValue = "true") - public BlobCheckpointStoreContainerInitializer blobCheckpointStoreContainerCreationInitializer() { + BlobCheckpointStoreContainerInitializer blobCheckpointStoreContainerCreationInitializer() { return containerAsyncClient -> { if (Boolean.FALSE.equals(containerAsyncClient.exists().block(Duration.ofSeconds(3)))) { LOGGER.debug("The checkpoint store container [{}] doesn't exist, will create the blob container now.", diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsAutoConfiguration.java similarity index 86% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsAutoConfiguration.java index 24a7bbc6a2c4..838ce11e4f39 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsAutoConfiguration.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsClientBuilderConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfiguration.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsClientBuilderConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfiguration.java index 2468e5424a8f..9f4471b9fe0c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsClientBuilderConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -17,7 +17,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_CLIENT_BUILDER_FACTORY_BEAN_NAME; /** * Configuration for Event Hub client builder, which provides {@link EventHubClientBuilder}. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsConsumerClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfiguration.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsConsumerClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfiguration.java index d38075823b72..f1a8bc145d36 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsConsumerClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfiguration.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventHubConsumerAsyncClient; import com.azure.messaging.eventhubs.EventHubConsumerClient; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnMissingProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnMissingProperty; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -24,8 +24,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME; /** * Configuration for Event Hub consumer client, which provides {@link EventHubConsumerClient} or @@ -58,13 +58,13 @@ static class SharedConsumerConnectionConfiguration { @Bean @ConditionalOnMissingBean - public EventHubConsumerAsyncClient eventHubConsumerAsyncClient() { + EventHubConsumerAsyncClient eventHubConsumerAsyncClient() { return this.builder.buildAsyncConsumerClient(); } @Bean @ConditionalOnMissingBean - public EventHubConsumerClient eventHubConsumerClient(EventHubClientBuilder builder) { + EventHubConsumerClient eventHubConsumerClient(EventHubClientBuilder builder) { return this.builder.buildConsumerClient(); } } @@ -97,22 +97,22 @@ EventHubClientBuilderFactory eventHubClientBuilderFactoryForConsumer( @ConditionalOnBean(name = EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME) @ConditionalOnMissingBean(name = EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME) EventHubClientBuilder eventHubClientBuilderForConsumer( - @Qualifier(EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME) EventHubClientBuilderFactory clientBuilderFactory) { - + @Qualifier(EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME) + EventHubClientBuilderFactory clientBuilderFactory) { return clientBuilderFactory.build(); } @Bean @ConditionalOnMissingBean - public EventHubConsumerAsyncClient eventHubConsumerAsyncClient(@Qualifier(EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME) - EventHubClientBuilder builder) { + EventHubConsumerAsyncClient eventHubConsumerAsyncClient(@Qualifier(EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME) + EventHubClientBuilder builder) { return builder.buildAsyncConsumerClient(); } @Bean @ConditionalOnMissingBean - public EventHubConsumerClient eventHubConsumerClient(@Qualifier(EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME) - EventHubClientBuilder builder) { + EventHubConsumerClient eventHubConsumerClient(@Qualifier(EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME) + EventHubClientBuilder builder) { return builder.buildConsumerClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsMessagingAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfiguration.java similarity index 74% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsMessagingAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfiguration.java index 978b80216379..d7e55224214b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsMessagingAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.CheckpointStore; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; @@ -18,7 +18,7 @@ import com.azure.spring.messaging.eventhubs.core.properties.NamespaceProperties; import com.azure.spring.messaging.eventhubs.core.properties.ProcessorProperties; import com.azure.spring.messaging.eventhubs.core.properties.ProducerProperties; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsMessageConverter; import com.azure.spring.messaging.implementation.converter.ObjectMapperHolder; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -59,7 +59,7 @@ public class AzureEventHubsMessagingAutoConfiguration { @Bean @ConditionalOnMissingBean NamespaceProperties eventHubsNamespaceProperties(AzureEventHubsProperties properties, - ObjectProvider> connectionStringProviders) { + ObjectProvider> connectionStringProviders) { NamespaceProperties namespaceProperties = new NamespaceProperties(); BeanUtils.copyProperties(properties, namespaceProperties); copyAzureCommonProperties(properties, namespaceProperties); @@ -74,25 +74,13 @@ NamespaceProperties eventHubsNamespaceProperties(AzureEventHubsProperties proper return namespaceProperties; } - /** - * Configure the {@link EventHubsProcessorFactory} - */ @Configuration(proxyBeanMethods = false) @ConditionalOnBean(CheckpointStore.class) - public static class ProcessorContainerConfiguration { - - /** - * Creates the default Event Hubs namespace processor factory. - * - * @param properties Event Hubs namespace related properties. - * @param checkpointStore Checkpoint store for storing and retrieving partition ownership information and - * checkpoint details for each partition. - * @param suppliers Object provider suppliers. - * @return A default Event Hubs namespace processor factory. - */ + static class ProcessorContainerConfiguration { + @Bean @ConditionalOnMissingBean - public EventHubsProcessorFactory defaultEventHubsNamespaceProcessorFactory( + EventHubsProcessorFactory defaultEventHubsNamespaceProcessorFactory( NamespaceProperties properties, CheckpointStore checkpointStore, ObjectProvider> suppliers) { return new DefaultEventHubsNamespaceProcessorFactory(checkpointStore, properties, @@ -101,22 +89,12 @@ public EventHubsProcessorFactory defaultEventHubsNamespaceProcessorFactory( } - /** - * Configure the {@link EventHubsTemplate} - */ @Configuration(proxyBeanMethods = false) - public static class EventHubsTemplateConfiguration { - - /** - * Creates a default Event Hubs namespace producer factory. - * - * @param properties Event Hubs namespace related properties. - * @param suppliers Object provider suppliers. - * @return A default Event Hubs namespace producer factory. - */ + static class EventHubsTemplateConfiguration { + @Bean @ConditionalOnMissingBean - public EventHubsProducerFactory defaultEventHubsNamespaceProducerFactory( + EventHubsProducerFactory defaultEventHubsNamespaceProducerFactory( NamespaceProperties properties, ObjectProvider> suppliers) { return new DefaultEventHubsNamespaceProducerFactory(properties, suppliers.getIfAvailable()); @@ -136,17 +114,10 @@ EventHubsMessageConverter eventHubsMessageConverter(ObjectMapper objectMapper) { return new EventHubsMessageConverter(objectMapper); } - /** - * Creates an Event Hubs template. - * - * @param producerFactory An Event Hubs producer factory. - * @param messageConverter An Event Hubs message converter. - * @return An Event Hubs template. - */ @Bean @ConditionalOnMissingBean - public EventHubsTemplate eventHubsTemplate(EventHubsProducerFactory producerFactory, - EventHubsMessageConverter messageConverter) { + EventHubsTemplate eventHubsTemplate(EventHubsProducerFactory producerFactory, + EventHubsMessageConverter messageConverter) { EventHubsTemplate eventHubsTemplate = new EventHubsTemplate(producerFactory); eventHubsTemplate.setMessageConverter(messageConverter); return eventHubsTemplate; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProcessorClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProcessorClientConfiguration.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProcessorClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProcessorClientConfiguration.java index 313c85c7d804..75464f665054 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProcessorClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProcessorClientConfiguration.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.EventProcessorClient; import com.azure.messaging.eventhubs.EventProcessorClientBuilder; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -46,7 +46,7 @@ class AzureEventHubsProcessorClientConfiguration { @Bean @ConditionalOnMissingBean - public EventProcessorClient eventProcessorClient(EventProcessorClientBuilder builder) { + EventProcessorClient eventProcessorClient(EventProcessorClientBuilder builder) { return builder.buildEventProcessorClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProducerClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfiguration.java similarity index 80% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProducerClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfiguration.java index afb814710f85..25a6bca7d4c8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProducerClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfiguration.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; import com.azure.messaging.eventhubs.EventHubProducerClient; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnMissingProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnMissingProperty; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -21,8 +21,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_FACTORY_BEAN_NAME; /** * An auto-configuration for Event Hub, which provides {@link EventHubProducerAsyncClient} and @@ -40,13 +40,13 @@ class AzureEventHubsProducerClientConfiguration { static class SharedProducerConnectionConfiguration { @Bean @ConditionalOnMissingBean - public EventHubProducerAsyncClient eventHubProducerAsyncClient(EventHubClientBuilder builder) { + EventHubProducerAsyncClient eventHubProducerAsyncClient(EventHubClientBuilder builder) { return builder.buildAsyncProducerClient(); } @Bean @ConditionalOnMissingBean - public EventHubProducerClient eventHubProducerClient(EventHubClientBuilder builder) { + EventHubProducerClient eventHubProducerClient(EventHubClientBuilder builder) { return builder.buildProducerClient(); } } @@ -86,15 +86,15 @@ EventHubClientBuilder eventHubClientBuilderForProducer( @Bean @ConditionalOnMissingBean - public EventHubProducerAsyncClient eventHubProducerAsyncClient(@Qualifier(EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME) - EventHubClientBuilder builder) { + EventHubProducerAsyncClient eventHubProducerAsyncClient(@Qualifier(EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME) + EventHubClientBuilder builder) { return builder.buildAsyncProducerClient(); } @Bean @ConditionalOnMissingBean - public EventHubProducerClient eventHubProducerClient(@Qualifier(EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME) - EventHubClientBuilder builder) { + EventHubProducerClient eventHubProducerClient(@Qualifier(EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME) + EventHubClientBuilder builder) { return builder.buildProducerClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaAutoConfiguration.java similarity index 70% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaAutoConfiguration.java index 6f0da8cb0b72..a73f168d48dc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaAutoConfiguration.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.kafka.AzureEventHubsKafkaOAuth2AutoConfiguration; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureEventHubsResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.kafka.AzureEventHubsKafkaOAuth2AutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureEventHubsResourceManagerAutoConfiguration; import com.azure.spring.cloud.core.implementation.connectionstring.EventHubsConnectionString; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; @@ -18,7 +18,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; @@ -40,15 +39,10 @@ public class AzureEventHubsKafkaAutoConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(AzureEventHubsKafkaAutoConfiguration.class); - /** - * The static connection string provider to provide the connection string for an Event Hubs instance. - * @param environment the Spring environment. - * @return the connection string provider. - */ @Bean @ConditionalOnProperty("spring.cloud.azure.eventhubs.connection-string") @ConditionalOnMissingBean(value = AzureServiceType.EventHubs.class, parameterizedContainer = ServiceConnectionStringProvider.class) - public StaticConnectionStringProvider eventHubsKafkaConnectionString(Environment environment) { + StaticConnectionStringProvider eventHubsKafkaConnectionString(Environment environment) { String connectionString = environment.getProperty("spring.cloud.azure.eventhubs.connection-string"); try { @@ -61,13 +55,6 @@ public StaticConnectionStringProvider eventHubsKafka return new StaticConnectionStringProvider<>(AzureServiceType.EVENT_HUBS, connectionString); } - /** - * The {@link KafkaPropertiesBeanPostProcessor} will be created if an Azure Event Hubs connection string is provided - * and the Kafka dependency is detected from the classpath. - * @param connectionStringProvider the Azure Event Hubs connection string provider. - * @return the {@link KafkaPropertiesBeanPostProcessor} to configure Azure Event Hubs connection information - * to {@link KafkaProperties}. - */ @Bean @ConditionalOnBean(value = AzureServiceType.EventHubs.class, parameterizedContainer = ServiceConnectionStringProvider.class) static KafkaPropertiesBeanPostProcessor kafkaPropertiesBeanPostProcessor( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/KafkaPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/KafkaPropertiesBeanPostProcessor.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/KafkaPropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/KafkaPropertiesBeanPostProcessor.java index 7bd3f187f15c..b55ce88e8897 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/KafkaPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/KafkaPropertiesBeanPostProcessor.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka; import com.azure.spring.cloud.core.implementation.connectionstring.EventHubsConnectionString; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; @@ -36,7 +36,7 @@ class KafkaPropertiesBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof KafkaProperties) { - //TODO (yiliu6): link to OAuth2 reference doc here + //TODO(yiliu6): link to OAuth2 reference doc here LOGGER.warn("Autoconfiguration for Event Hubs for Kafka on connection string/Azure Resource Manager" + " has been deprecated, please migrate to AzureEventHubsKafkaOAuth2AutoConfiguration for OAuth2 authentication with Azure Identity credentials." + " To leverage the OAuth2 authentication, you can delete all your Event Hubs for Kafka credential configurations, and configure Kafka bootstrap servers" diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/AzureJdbcAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/AzureJdbcAutoConfiguration.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/AzureJdbcAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/AzureJdbcAutoConfiguration.java index d9f9541ece28..2b52462cbdcf 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/AzureJdbcAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/AzureJdbcAutoConfiguration.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.SpringTokenCredentialProviderContextProvider; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/DatabaseType.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/DatabaseType.java index 23cb6f96aeb7..08b5eb24f744 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/DatabaseType.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/DatabaseType.java @@ -4,19 +4,21 @@ package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import org.springframework.util.ClassUtils; + import java.util.Map; import java.util.TreeMap; + import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_AUTH_PLUGIN_CLASS_NAME; -import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRES_AUTH_PLUGIN_CLASS_NAME; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_PROPERTY_NAME_AUTHENTICATION_PLUGINS; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_PROPERTY_NAME_DEFAULT_AUTHENTICATION_PLUGIN; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_PROPERTY_NAME_SSL_MODE; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_PROPERTY_NAME_USE_SSL; -import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_NAME_AUTHENTICATION_PLUGIN_CLASSNAME; -import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_NAME_SSL_MODE; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_PROPERTY_VALUE_SSL_MODE; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.MYSQL_PROPERTY_VALUE_USE_SSL; +import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_NAME_AUTHENTICATION_PLUGIN_CLASSNAME; +import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_NAME_SSL_MODE; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_VALUE_SSL_MODE; +import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRES_AUTH_PLUGIN_CLASS_NAME; /** * The type of database URL. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java index 7e16de6c0404..95ecdea00068 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessor.java @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.core.credential.TokenCredential; import com.azure.identity.extensions.implementation.credential.TokenCredentialProviderOptions; import com.azure.identity.extensions.implementation.credential.provider.TokenCredentialProvider; import com.azure.identity.extensions.implementation.enums.AuthProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.DatabaseType; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcConnectionString; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcConnectionStringEnhancer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider; -import com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties; +import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/PasswordlessRuntimeHints.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/PasswordlessRuntimeHints.java new file mode 100644 index 000000000000..9778643b82f9 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/PasswordlessRuntimeHints.java @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; + +import com.azure.spring.cloud.service.implementation.passwordless.AzurePasswordlessProperties; +import org.springframework.aot.hint.MemberCategory; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; +import org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar; + +class PasswordlessRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + BindableRuntimeHintsRegistrar.forTypes(AzurePasswordlessProperties.class) + .registerHints(hints); + hints.reflection().registerTypeIfPresent(classLoader, + "com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin", + MemberCategory.DECLARED_CLASSES, + MemberCategory.DECLARED_FIELDS, + MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, + MemberCategory.INVOKE_DECLARED_METHODS); + hints.reflection().registerTypeIfPresent(classLoader, + "com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin", + MemberCategory.DECLARED_CLASSES, + MemberCategory.DECLARED_FIELDS, + MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, + MemberCategory.INVOKE_DECLARED_METHODS); + hints.reflection().registerTypeIfPresent(classLoader, + "com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider", + MemberCategory.DECLARED_CLASSES, + MemberCategory.DECLARED_FIELDS, + MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, + MemberCategory.INVOKE_DECLARED_METHODS); + } + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsCredentialSupplier.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/AzureServiceBusJmsCredentialSupplier.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsCredentialSupplier.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/AzureServiceBusJmsCredentialSupplier.java index a679ff3f2d32..3d5782d7b28f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsCredentialSupplier.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/AzureServiceBusJmsCredentialSupplier.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; @@ -12,7 +12,6 @@ * AzureServiceBusJmsCredentialSupplier that provides a String as the password to connect Azure ServiceBus. * * @since 4.7.0 - * */ public class AzureServiceBusJmsCredentialSupplier implements Supplier { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/AzureServiceBusJmsPropertiesBeanPostProcessor.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsPropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/AzureServiceBusJmsPropertiesBeanPostProcessor.java index d33581162bda..4db04c3dca82 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/AzureServiceBusJmsPropertiesBeanPostProcessor.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; import org.springframework.beans.BeansException; @@ -11,9 +11,6 @@ import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.util.StringUtils; -/** - * {@link BeanPostProcessor} to apply a {@link ServiceConnectionStringProvider} to {@link AzureServiceBusJmsProperties}. - */ class AzureServiceBusJmsPropertiesBeanPostProcessor implements BeanPostProcessor { private final ObjectProvider> connectionStringProviders; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfiguration.java similarity index 57% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfiguration.java index 0fe1147de2dd..3268ca074020 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfiguration.java @@ -1,18 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnMissingProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnMissingProperty; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; -import com.azure.spring.cloud.core.implementation.util.ReflectionUtils; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; -import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory; +import com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsConnectionFactoryCustomizer; +import jakarta.jms.ConnectionFactory; import org.apache.qpid.jms.JmsConnectionExtensions; import org.apache.qpid.jms.JmsConnectionFactory; import org.springframework.beans.factory.ObjectProvider; @@ -32,12 +31,11 @@ import org.springframework.context.annotation.Import; import org.springframework.jms.core.JmsTemplate; -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import java.net.URI; -import java.util.EnumMap; +import java.util.HashMap; import java.util.Map; -import java.util.function.BiFunction; + +import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.AZURE_SPRING_PASSWORDLESS_SERVICE_BUS; +import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.AZURE_SPRING_SERVICE_BUS; /** * {@link EnableAutoConfiguration Auto-configuration} for Azure Service Bus JMS support. @@ -52,7 +50,7 @@ @ConditionalOnProperty(value = "spring.jms.servicebus.enabled", matchIfMissing = true) @ConditionalOnClass({ ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class }) @EnableConfigurationProperties({ JmsProperties.class }) -@Import({ ServiceBusJmsConnectionFactoryConfiguration.class, ServiceBusJmsContainerConfiguration.class }) +@Import({ ServiceBusJmsPasswordlessConfiguration.class, ServiceBusJmsConnectionFactoryConfiguration.class, ServiceBusJmsContainerConfiguration.class }) public class ServiceBusJmsAutoConfiguration { @Bean @@ -62,32 +60,22 @@ AzureServiceBusJmsProperties serviceBusJmsProperties(AzureGlobalProperties azure } @Bean - @ConditionalOnExpression("'standard'.equalsIgnoreCase('${spring.jms.servicebus.pricing-tier}')") - @SuppressWarnings("unchecked") - AzureServiceBusJmsConnectionFactoryCustomizer amqpOpenPropertiesCustomizer(ObjectProvider azureServiceBusJmsCredentialSupplier) { + @ConditionalOnExpression("'premium'.equalsIgnoreCase('${spring.jms.servicebus.pricing-tier}')") + ServiceBusJmsConnectionFactoryCustomizer amqpOpenPropertiesCustomizer(ObjectProvider azureServiceBusJmsCredentialSupplier) { return factory -> { - JmsConnectionFactory jmsFactory = (JmsConnectionFactory) ReflectionUtils.getField(ServiceBusJmsConnectionFactory.class, "factory", factory); - EnumMap> extensionMap = - (EnumMap) ReflectionUtils.getField(JmsConnectionFactory.class, "extensionMap", jmsFactory); - if (extensionMap.containsKey(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES)) { - Map properties = (Map) extensionMap.get(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES).apply(null, null); - if (properties.containsKey("com.microsoft:is-client-provider")) { - jmsFactory.setExtension(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES.toString(), - (connection, uri) -> { - properties.remove("com.microsoft:is-client-provider"); - return properties; - }); - } + final Map properties = new HashMap<>(); + properties.put("com.microsoft:is-client-provider", true); + if (azureServiceBusJmsCredentialSupplier.getIfAvailable() != null) { + properties.put("user-agent", AZURE_SPRING_PASSWORDLESS_SERVICE_BUS); + } else { + properties.put("user-agent", AZURE_SPRING_SERVICE_BUS); } + //set user agent + factory.setExtension(JmsConnectionExtensions.AMQP_OPEN_PROPERTIES.toString(), + (connection, uri) -> properties); }; } - /** - * The BeanPostProcessor to instrument the {@link AzureServiceBusJmsProperties} bean with provided connection string - * providers. - * @param connectionStringProviders the connection string providers to provide the Service Bus connection string. - * @return the bean post processor. - */ @Bean @ConditionalOnMissingBean @ConditionalOnMissingProperty(prefix = "spring.jms.servicebus", name = "connection-string") diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java index 291bf37c1ede..aa9062d9825e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryConfiguration.java @@ -1,11 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; -import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.jms.ServiceBusJmsConnectionFactory; +import com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsConnectionFactoryCustomizer; +import jakarta.jms.ConnectionFactory; import org.apache.commons.pool2.PooledObject; import org.messaginghub.pooled.jms.JmsPoolConnectionFactory; import org.springframework.beans.factory.ObjectProvider; @@ -18,18 +19,14 @@ import org.springframework.context.annotation.Configuration; import org.springframework.jms.connection.CachingConnectionFactory; -import javax.jms.ConnectionFactory; import java.util.stream.Collectors; -/** - * An auto-configuration for Service Bus JMS connection factory. - */ @Configuration(proxyBeanMethods = false) @ConditionalOnMissingBean(ConnectionFactory.class) -public class ServiceBusJmsConnectionFactoryConfiguration { +class ServiceBusJmsConnectionFactoryConfiguration { private static ServiceBusJmsConnectionFactory createJmsConnectionFactory(AzureServiceBusJmsProperties properties, - ObjectProvider factoryCustomizers) { + ObjectProvider factoryCustomizers) { return new ServiceBusJmsConnectionFactoryFactory(properties, factoryCustomizers.orderedStream().collect(Collectors.toList())) .createConnectionFactory(ServiceBusJmsConnectionFactory.class); @@ -43,7 +40,7 @@ static class SimpleConnectionFactoryConfiguration { @Bean @ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false") ServiceBusJmsConnectionFactory jmsConnectionFactory(AzureServiceBusJmsProperties properties, - ObjectProvider factoryCustomizers) { + ObjectProvider factoryCustomizers) { return createJmsConnectionFactory(properties, factoryCustomizers); } @@ -56,7 +53,7 @@ static class CachingConnectionFactoryConfiguration { @Bean CachingConnectionFactory jmsConnectionFactory(JmsProperties jmsProperties, AzureServiceBusJmsProperties properties, - ObjectProvider factoryCustomizers) { + ObjectProvider factoryCustomizers) { ServiceBusJmsConnectionFactory factory = createJmsConnectionFactory(properties, factoryCustomizers); CachingConnectionFactory connectionFactory = new CachingConnectionFactory(factory); JmsProperties.Cache cacheProperties = jmsProperties.getCache(); @@ -76,7 +73,7 @@ static class PooledConnectionFactoryConfiguration { @Bean(destroyMethod = "stop") @ConditionalOnProperty(prefix = "spring.jms.servicebus.pool", name = "enabled", havingValue = "true") JmsPoolConnectionFactory jmsPoolConnectionFactory(AzureServiceBusJmsProperties properties, - ObjectProvider factoryCustomizers) { + ObjectProvider factoryCustomizers) { ServiceBusJmsConnectionFactory factory = createJmsConnectionFactory(properties, factoryCustomizers); return new JmsPoolConnectionFactoryFactory(properties.getPool()) .createPooledConnectionFactory(factory); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryFactory.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryFactory.java new file mode 100644 index 000000000000..b7b018947d83 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsConnectionFactoryFactory.java @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.jms; + +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.jms.ServiceBusJmsConnectionFactory; +import com.azure.spring.cloud.core.implementation.connectionstring.ServiceBusConnectionString; +import com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsConnectionFactoryCustomizer; +import org.apache.qpid.jms.policy.JmsDefaultPrefetchPolicy; +import org.springframework.util.Assert; +import org.springframework.util.StringUtils; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collections; +import java.util.List; + +class ServiceBusJmsConnectionFactoryFactory { + private final AzureServiceBusJmsProperties properties; + private final List factoryCustomizers; + + private static final String AMQP_URI_FORMAT = "amqps://%s?amqp.idleTimeout=%d"; + + ServiceBusJmsConnectionFactoryFactory(AzureServiceBusJmsProperties properties, + List factoryCustomizers) { + Assert.notNull(properties, "Properties must not be null"); + this.properties = properties; + this.factoryCustomizers = (factoryCustomizers != null) ? factoryCustomizers : Collections.emptyList(); + + } + + T createConnectionFactory(Class factoryClass) { + T factory = createConnectionFactoryInstance(factoryClass); + setClientId(factory); + setPrefetchPolicy(factory); + customize(factory); + return factory; + } + + private void setClientId(T factory) { + if (StringUtils.hasText(this.properties.getTopicClientId())) { + factory.setClientID(this.properties.getTopicClientId()); + } + } + + private void setPrefetchPolicy(T factory) { + AzureServiceBusJmsProperties.PrefetchPolicy prefetchProperties = this.properties.getPrefetchPolicy(); + JmsDefaultPrefetchPolicy prefetchPolicy = (JmsDefaultPrefetchPolicy) factory.getPrefetchPolicy(); + prefetchPolicy.setDurableTopicPrefetch(prefetchProperties.getDurableTopicPrefetch()); + prefetchPolicy.setQueueBrowserPrefetch(prefetchProperties.getQueueBrowserPrefetch()); + prefetchPolicy.setQueuePrefetch(prefetchProperties.getQueuePrefetch()); + prefetchPolicy.setTopicPrefetch(prefetchProperties.getTopicPrefetch()); + factory.setPrefetchPolicy(prefetchPolicy); + } + + private T createConnectionFactoryInstance(Class factoryClass) { + try { + T factory; + if (properties.isPasswordlessEnabled()) { + String remoteUrl = String.format(AMQP_URI_FORMAT, + properties.getNamespace() + "." + properties.getProfile().getEnvironment().getServiceBusDomainName(), + properties.getIdleTimeout().toMillis()); + factory = factoryClass.getConstructor(String.class).newInstance(remoteUrl); + } else { + ServiceBusConnectionString serviceBusConnectionString = new ServiceBusConnectionString(properties.getConnectionString()); + String host = serviceBusConnectionString.getEndpointUri().getHost(); + + String remoteUrl = String.format(AMQP_URI_FORMAT, host, properties.getIdleTimeout().toMillis()); + String username = serviceBusConnectionString.getSharedAccessKeyName(); + String password = serviceBusConnectionString.getSharedAccessKey(); + + if (StringUtils.hasLength(username) && StringUtils.hasLength(password)) { + factory = factoryClass.getConstructor(String.class, String.class, String.class) + .newInstance(username, password, remoteUrl); + } else { + factory = factoryClass.getConstructor(String.class).newInstance(remoteUrl); + } + } + return factory; + } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { + throw new IllegalStateException("Unable to create JmsConnectionFactory", ex); + } + } + + private void customize(ServiceBusJmsConnectionFactory connectionFactory) { + for (ServiceBusJmsConnectionFactoryCustomizer factoryCustomizer : this.factoryCustomizers) { + factoryCustomizer.customize(connectionFactory); + } + } +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsContainerConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsContainerConfiguration.java similarity index 69% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsContainerConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsContainerConfiguration.java index b3d654892293..1e0cc92b9f60 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsContainerConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsContainerConfiguration.java @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; +import jakarta.jms.ConnectionFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer; @@ -13,38 +14,19 @@ import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory; -import javax.jms.ConnectionFactory; - -/** - * Abstract autoconfiguration class of ServiceBusJMS for JmsListenerContainerFactory. - */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass(EnableJms.class) -public class ServiceBusJmsContainerConfiguration { +class ServiceBusJmsContainerConfiguration { - /** - * The Azure ServiceBus JMS properties - */ private final AzureServiceBusJmsProperties azureServiceBusJMSProperties; - /** - * Creates a new instance of {@link ServiceBusJmsContainerConfiguration}. - * - * @param azureServiceBusJMSProperties the Azure ServiceBus JMS properties - */ - public ServiceBusJmsContainerConfiguration(AzureServiceBusJmsProperties azureServiceBusJMSProperties) { + ServiceBusJmsContainerConfiguration(AzureServiceBusJmsProperties azureServiceBusJMSProperties) { this.azureServiceBusJMSProperties = azureServiceBusJMSProperties; } - /** - * Autoconfigure the {@link JmsListenerContainerFactory} for Service Bus queues. - * @param configurer the configurer to configure the container factory. - * @param connectionFactory the connection factory for the container factory. - * @return the jms listener container factory for Service Bus queues. - */ @Bean @ConditionalOnMissingBean - public JmsListenerContainerFactory jmsListenerContainerFactory( + JmsListenerContainerFactory jmsListenerContainerFactory( DefaultJmsListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory jmsListenerContainerFactory = new DefaultJmsListenerContainerFactory(); configurer.configure(jmsListenerContainerFactory, connectionFactory); @@ -53,15 +35,9 @@ public JmsListenerContainerFactory jmsListenerContainerFactory( return jmsListenerContainerFactory; } - /** - * Autoconfigure the {@link JmsListenerContainerFactory} for Service Bus topics. - * @param configurer the configurer to configure the container factory. - * @param connectionFactory the connection factory for the container factory. - * @return the jms listener container factory for Service Bus topics. - */ @Bean @ConditionalOnMissingBean(name = "topicJmsListenerContainerFactory") - public JmsListenerContainerFactory topicJmsListenerContainerFactory( + JmsListenerContainerFactory topicJmsListenerContainerFactory( DefaultJmsListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory jmsListenerContainerFactory = new DefaultJmsListenerContainerFactory(); configurer.configure(jmsListenerContainerFactory, connectionFactory); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsPasswordlessConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsPasswordlessConfiguration.java similarity index 57% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsPasswordlessConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsPasswordlessConfiguration.java index a3f83d196806..68a0a551ec4e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsPasswordlessConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsPasswordlessConfiguration.java @@ -1,9 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsConnectionFactoryCustomizer; +import org.apache.qpid.jms.JmsConnectionExtensions; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -25,4 +27,15 @@ AzureServiceBusJmsCredentialSupplier azureServiceBusJmsCredentialSupplier(AzureS return new AzureServiceBusJmsCredentialSupplier(azureServiceBusJmsProperties.toPasswordlessProperties()); } + @Bean + ServiceBusJmsConnectionFactoryCustomizer jmsAADAuthenticationCustomizer(AzureServiceBusJmsCredentialSupplier credentialSupplier) { + return factory -> { + factory.setExtension(JmsConnectionExtensions.USERNAME_OVERRIDE.toString(), (connection, uri) -> "$jwt"); + factory.setExtension(JmsConnectionExtensions.PASSWORD_OVERRIDE.toString(), (connection, uri) -> + credentialSupplier.get() + ); + }; + } + + } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/AzureServiceBusJmsProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java similarity index 61% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/AzureServiceBusJmsProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java index b4bd8f2b496b..427309429027 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/AzureServiceBusJmsProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsProperties.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms.properties; +package com.azure.spring.cloud.autoconfigure.implementation.jms.properties; -import com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties; import com.azure.spring.cloud.core.properties.PasswordlessProperties; import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.autoconfigure.jms.JmsPoolConnectionFactoryProperties; @@ -17,9 +17,6 @@ import java.util.HashMap; import java.util.Map; -/** - * {@link ConfigurationProperties} for configuring Azure Service Bus JMS. - */ @ConfigurationProperties(prefix = AzureServiceBusJmsProperties.PREFIX) public class AzureServiceBusJmsProperties implements InitializingBean, PasswordlessProperties { @@ -30,11 +27,6 @@ public class AzureServiceBusJmsProperties implements InitializingBean, Passwordl private static final String SERVICE_BUS_SCOPE_AZURE = "https://servicebus.azure.net/.default"; private static final String SERVICE_BUS_SCOPE_AZURE_CHINA = SERVICE_BUS_SCOPE_AZURE; - /** - * @deprecated AZURE_GERMANY is deprecated. Please use other Service Bus scopes. - */ - @Deprecated - private static final String SERVICE_BUS_SCOPE_AZURE_GERMANY = SERVICE_BUS_SCOPE_AZURE; private static final String SERVICE_BUS_SCOPE_AZURE_US_GOVERNMENT = SERVICE_BUS_SCOPE_AZURE; private static final Map SERVICEBUS_SCOPE_MAP = new HashMap() { @@ -63,7 +55,7 @@ public class AzureServiceBusJmsProperties implements InitializingBean, Passwordl private boolean passwordlessEnabled = false; /** - * Whether to enable Servive Bus JMS autoconfiguration. + * Whether to enable Service Bus JMS autoconfiguration. */ private boolean enabled = true; @@ -98,206 +90,102 @@ public class AzureServiceBusJmsProperties implements InitializingBean, Passwordl @NestedConfigurationProperty private final JmsPoolConnectionFactoryProperties pool = new JmsPoolConnectionFactoryProperties(); - /** - * Whether to enable Service Bus JMS autoconfiguration. - * @return Whether to enable Service Bus autoconfiguration - */ public boolean isEnabled() { return enabled; } - /** - * Set whether to enable Service Bus JMS autoconfiguation. - * @param enabled whether to enable Service Bus autoconfiguration. - */ public void setEnabled(boolean enabled) { this.enabled = enabled; } - /** - * The properties for a pooled connection factory. - * @return the properties for a pooled connection factory. - */ public JmsPoolConnectionFactoryProperties getPool() { return pool; } - /** - * Get the connection string to connect to a Service Bus namespace. - * @return the connection string to connect to a Service Bus namespace. - */ public String getConnectionString() { return connectionString; } - /** - * Set the connection string to connect to a Service Bus namespace. - * @param connectionString the connection string to connect to a Service Bus namespace. - */ public void setConnectionString(String connectionString) { this.connectionString = connectionString; } - /** - * Get the Service Bus topic client ID. - * @return the Service Bus topic client ID. - */ public String getTopicClientId() { return topicClientId; } - /** - * Set the Service Bus topic client ID. - * @param topicClientId the Service Bus topic client ID. - */ public void setTopicClientId(String topicClientId) { this.topicClientId = topicClientId; } - /** - * Get the pricing tier for a Service Bus namespace. - * @return the pricing tier for a Service Bus namespace. - */ public String getPricingTier() { return this.pricingTier; } - /** - * Set the pricing tier for a Service Bus namespace. - * @param pricingTier the pricing tier for a Service Bus namespace. - */ public void setPricingTier(String pricingTier) { this.pricingTier = pricingTier; } - /** - * Get the connection idle timeout duration. - * @return the connection idle timeout duration. - */ public Duration getIdleTimeout() { return idleTimeout; } - /** - * Set the connection idle timeout duration. - * @param idleTimeout the connection idle timeout duration. - */ public void setIdleTimeout(Duration idleTimeout) { this.idleTimeout = idleTimeout; } - /** - * Get the listener related properties. - * @return the listener related properties. - */ public Listener getListener() { return listener; } - /** - * Get the prefetch policy related properties. - * @return the prefetch policy related properties. - */ public PrefetchPolicy getPrefetchPolicy() { return prefetchPolicy; } - /** - * Get the Service Bus namespace. - * @return the Service Bus namespace. - */ public String getNamespace() { return namespace; } - /** - * Set the Service Bus namespace. - * @param namespace the Service Bus namespace. - */ public void setNamespace(String namespace) { this.namespace = namespace; } - /** - * Get the scopes required for the access token. - * - * @return scopes required for the access token - */ @Override public String getScopes() { return this.scopes == null ? getDefaultScopes() : this.scopes; } - /** - * Set the scopes required for the access token. - * - * @param scopes the scopes required for the access token - */ public void setScopes(String scopes) { this.scopes = scopes; } - /** - * Whether to enable connections authenticating with Azure AD, default is false. - * - * @return enable connections authenticating with Azure AD if true, otherwise false. - */ @Override public boolean isPasswordlessEnabled() { return passwordlessEnabled; } - /** - * Set the value to enable/disable connections authenticating with Azure AD. - * If not set, by default the value is false. - * - * @param passwordlessEnabled the passwordlessEnabled - */ public void setPasswordlessEnabled(boolean passwordlessEnabled) { this.passwordlessEnabled = passwordlessEnabled; } - /** - * Get the profile - * @return the profile - */ @Override public AzureProfileConfigurationProperties getProfile() { return profile; } - /** - * Set the profile - * @param profile the profile properties related to an Azure subscription - */ public void setProfile(AzureProfileConfigurationProperties profile) { this.profile = profile; } - /** - * Get the credential properties. - * - * @return the credential properties. - */ @Override public TokenCredentialConfigurationProperties getCredential() { return credential; } - /** - * Set the credential properties. - * - * @param credential the credential properties - */ public void setCredential(TokenCredentialConfigurationProperties credential) { this.credential = credential; } - /** - * Validate spring.jms.servicebus related properties. - * - * @throws IllegalArgumentException If connectionString is empty. - */ @Override public void afterPropertiesSet() throws Exception { if (isPasswordlessEnabled()) { @@ -321,10 +209,6 @@ public void afterPropertiesSet() throws Exception { } } - /** - * Properties to configure {@link org.apache.qpid.jms.policy.JmsDefaultPrefetchPolicy} for {@link - * org.apache.qpid.jms.JmsConnectionFactory} . - */ public static class PrefetchPolicy { /** @@ -348,101 +232,47 @@ public static class PrefetchPolicy { */ private int topicPrefetch = 0; - /** - * Gets the all prefetch value. - * - * @return The all prefect value. - */ public int getAll() { return Math.max(all, 0); } - /** - * Sets the all prefetch value. - * - * @param all The all prefetch value. - */ public void setAll(int all) { this.all = all; } - /** - * Gets the durable topic prefetch value. - * - * @return The durable topic prefetch value. - */ public int getDurableTopicPrefetch() { return durableTopicPrefetch > 0 ? durableTopicPrefetch : getAll(); } - /** - * Sets the durable topic prefetch value. - * - * @param durableTopicPrefetch The durable topic prefetch value. - */ public void setDurableTopicPrefetch(int durableTopicPrefetch) { this.durableTopicPrefetch = durableTopicPrefetch; } - /** - * Gets the queue browser prefetch value. - * - * @return The queue browser prefetch value. - */ public int getQueueBrowserPrefetch() { return queueBrowserPrefetch > 0 ? queueBrowserPrefetch : getAll(); } - /** - * Sets the queue browser prefetch value. - * - * @param queueBrowserPrefetch The queue browser prefetch value. - */ public void setQueueBrowserPrefetch(int queueBrowserPrefetch) { this.queueBrowserPrefetch = queueBrowserPrefetch; } - /** - * Gets the queue prefetch value. - * - * @return The queue prefetch value. - */ public int getQueuePrefetch() { return queuePrefetch > 0 ? queuePrefetch : getAll(); } - /** - * Sets the queue prefetch value. - * - * @param queuePrefetch The queue prefetch value. - */ public void setQueuePrefetch(int queuePrefetch) { this.queuePrefetch = queuePrefetch; } - /** - * Gets the topic prefetch value. - * - * @return The topic prefetch value. - */ public int getTopicPrefetch() { return topicPrefetch > 0 ? topicPrefetch : getAll(); } - /** - * Sets the topic prefetch value. - * - * @param topicPrefetch The topic prefetch value. - */ public void setTopicPrefetch(int topicPrefetch) { this.topicPrefetch = topicPrefetch; } } - /** - * Properties to configure {@link org.springframework.jms.annotation.JmsListener} for {@link - * org.springframework.jms.config.AbstractJmsListenerContainerFactory}. - */ public static class Listener { /** @@ -470,92 +300,42 @@ public static class Listener { */ private Integer phase; - /** - * Whether reply destination type is topic. - * - * @return Whether reply destination type is topic. - */ public Boolean isReplyPubSubDomain() { return replyPubSubDomain; } - /** - * Sets whether reply destination is topic. - * - * @param replyPubSubDomain Whether reply destination is topic. - */ public void setReplyPubSubDomain(Boolean replyPubSubDomain) { this.replyPubSubDomain = replyPubSubDomain; } - /** - * Gets the reply QoS settings. - * - * @return The reply QoS settings. - */ public QosSettings getReplyQosSettings() { return replyQosSettings; } - /** - * Sets the reply QoS settings. - * - * @param replyQosSettings The reply QoS settings. - */ public void setReplyQosSettings(QosSettings replyQosSettings) { this.replyQosSettings = replyQosSettings; } - /** - * Whether the subscription is durable. - * - * @return Whether the subscription is durable. - */ public Boolean isSubscriptionDurable() { return subscriptionDurable; } - /** - * Sets whether the subscription is durable. - * - * @param subscriptionDurable Whether the subscription is durable. - */ public void setSubscriptionDurable(Boolean subscriptionDurable) { this.subscriptionDurable = subscriptionDurable; } - /** - * Whether the subscription is shared. - * - * @return Whether the subscription is shared. - */ public Boolean isSubscriptionShared() { return subscriptionShared; } - /** - * Sets whether the subscription is shared. - * - * @param subscriptionShared Whether the subscription is shared. - */ public void setSubscriptionShared(Boolean subscriptionShared) { this.subscriptionShared = subscriptionShared; } - /** - * Gets the phase. - * - * @return The phase. - */ public Integer getPhase() { return phase; } - /** - * Sets the phase. - * - * @param phase The phase. - */ public void setPhase(Integer phase) { this.phase = phase; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractKafkaPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractKafkaPropertiesBeanPostProcessor.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractKafkaPropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractKafkaPropertiesBeanPostProcessor.java index a9ab288fef76..1a1b8c077b8e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractKafkaPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractKafkaPropertiesBeanPostProcessor.java @@ -1,33 +1,32 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Collections; - -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.service.implementation.jaas.Jaas; -import com.azure.spring.cloud.service.implementation.jaas.JaasResolver; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.implementation.properties.PropertyMapper; import com.azure.spring.cloud.core.properties.AzureProperties; +import com.azure.spring.cloud.service.implementation.jaas.Jaas; +import com.azure.spring.cloud.service.implementation.jaas.JaasResolver; import com.azure.spring.cloud.service.implementation.kafka.AzureKafkaPropertiesUtils; import com.azure.spring.cloud.service.implementation.kafka.KafkaOAuth2AuthenticateCallbackHandler; import org.apache.kafka.common.message.ApiVersionsRequestData; import org.apache.kafka.common.requests.ApiVersionsRequest; import org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule; import org.slf4j.Logger; - import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.boot.autoconfigure.kafka.KafkaProperties; import org.springframework.util.ReflectionUtils; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.AZURE_SPRING_EVENT_HUBS_KAFKA_OAUTH; import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.VERSION; import static org.apache.kafka.clients.CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfiguration.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfiguration.java index fe69492d5db1..49da57ed1323 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfiguration.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaOAuth2AutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaOAuth2AutoConfiguration.java similarity index 80% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaOAuth2AutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaOAuth2AutoConfiguration.java index 874aa95a7ac9..fce8f65dc124 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaOAuth2AutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaOAuth2AutoConfiguration.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; - -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -12,7 +11,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.kafka.core.KafkaTemplate; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.PASSWORDLESS_KAFKA_PROPERTIES_BEAN_POST_PROCESSOR_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.PASSWORDLESS_KAFKA_PROPERTIES_BEAN_POST_PROCESSOR_BEAN_NAME; /** * {@link EnableAutoConfiguration Auto-configuration} for Azure Event Hubs Kafka support. Provide Azure Identity-based diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaSpringCloudStreamConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaSpringCloudStreamConfiguration.java similarity index 80% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaSpringCloudStreamConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaSpringCloudStreamConfiguration.java index 5330ae0af6b7..531a51f751f0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaSpringCloudStreamConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaSpringCloudStreamConfiguration.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.cloud.stream.binder.kafka.KafkaMessageChannelBinder; import org.springframework.context.annotation.Bean; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/BindingServicePropertiesBeanPostProcessor.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/BindingServicePropertiesBeanPostProcessor.java index 6367299a687e..26bfdaaa1606 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/BindingServicePropertiesBeanPostProcessor.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessor.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessor.java index 8150aeb9e43a..1ddc77a7f99a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessor.java @@ -1,18 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import java.util.HashMap; -import java.util.Map; - -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.service.implementation.kafka.AzureKafkaPropertiesUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties; +import java.util.HashMap; +import java.util.Map; + import static org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProvisioner.normalalizeBootPropsWithBinder; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaPropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaPropertiesBeanPostProcessor.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaPropertiesBeanPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaPropertiesBeanPostProcessor.java index 24fdd9bd4ab5..3ca80f899bd9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaPropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaPropertiesBeanPostProcessor.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import java.util.Map; - -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.boot.autoconfigure.kafka.KafkaProperties; +import java.util.Map; + class KafkaPropertiesBeanPostProcessor extends AbstractKafkaPropertiesBeanPostProcessor { private static final Logger LOGGER = LoggerFactory.getLogger(KafkaPropertiesBeanPostProcessor.class); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultConfiguration.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultConfiguration.java index 136d62dc0b14..27d0d0f75dfc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.common.AzureKeyVaultProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/AzureKeyVaultCertificateAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/certificates/AzureKeyVaultCertificateAutoConfiguration.java similarity index 80% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/AzureKeyVaultCertificateAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/certificates/AzureKeyVaultCertificateAutoConfiguration.java index 5ada7300305c..4f4f41c6fb2b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/AzureKeyVaultCertificateAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/certificates/AzureKeyVaultCertificateAutoConfiguration.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.certificates; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates; import com.azure.security.keyvault.certificates.CertificateAsyncClient; import com.azure.security.keyvault.certificates.CertificateClient; import com.azure.security.keyvault.certificates.CertificateClientBuilder; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.AzureKeyVaultConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.properties.AzureKeyVaultCertificateProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.common.AzureKeyVaultProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureServicePropertiesUtils; -import com.azure.spring.cloud.autoconfigure.keyvault.AzureKeyVaultConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.keyvault.certificates.CertificateClientBuilderFactory; @@ -44,25 +44,15 @@ AzureKeyVaultCertificateProperties azureKeyVaultCertificateProperties(AzureKeyVa return AzureServicePropertiesUtils.loadServiceCommonProperties(azureKeyVaultProperties, new AzureKeyVaultCertificateProperties()); } - /** - * Autoconfigure the {@link CertificateClient} instance. - * @param builder the {@link CertificateClientBuilder} to build the instance. - * @return the certificate client instance. - */ @Bean @ConditionalOnMissingBean - public CertificateClient azureKeyVaultCertificateClient(CertificateClientBuilder builder) { + CertificateClient azureKeyVaultCertificateClient(CertificateClientBuilder builder) { return builder.buildClient(); } - /** - * Autoconfigure the {@link CertificateAsyncClient} instance. - * @param builder the {@link CertificateClientBuilder} to build the instance. - * @return the certificate async client instance. - */ @Bean @ConditionalOnMissingBean - public CertificateAsyncClient azureKeyVaultCertificateAsyncClient(CertificateClientBuilder builder) { + CertificateAsyncClient azureKeyVaultCertificateAsyncClient(CertificateClientBuilder builder) { return builder.buildAsyncClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultEnvironmentPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultEnvironmentPostProcessor.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultEnvironmentPostProcessor.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultEnvironmentPostProcessor.java index 3f602e7cf6fb..9b8a54b8fdcb 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultEnvironmentPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultEnvironmentPostProcessor.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import com.azure.security.keyvault.secrets.SecretClient; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultPropertySourceProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; import com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultOperation.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultOperation.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultOperation.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultOperation.java index e627507c05cf..580435e3e99d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultOperation.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultOperation.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import com.azure.core.http.rest.PagedResponse; import com.azure.core.util.paging.ContinuablePagedIterable; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultPropertySource.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultPropertySource.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultPropertySource.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultPropertySource.java index 1fd20ec3a3d6..6763740aa865 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultPropertySource.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultPropertySource.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import org.springframework.core.env.EnumerablePropertySource; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/AzureKeyVaultSecretAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/secrets/AzureKeyVaultSecretAutoConfiguration.java similarity index 81% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/AzureKeyVaultSecretAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/secrets/AzureKeyVaultSecretAutoConfiguration.java index db5191ab5ef4..d3328b39c5b7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/AzureKeyVaultSecretAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/secrets/AzureKeyVaultSecretAutoConfiguration.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.secrets; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets; import com.azure.security.keyvault.secrets.SecretAsyncClient; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.AzureKeyVaultConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.common.AzureKeyVaultProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureServicePropertiesUtils; -import com.azure.spring.cloud.autoconfigure.keyvault.AzureKeyVaultConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.keyvault.secrets.SecretClientBuilderFactory; @@ -44,25 +44,15 @@ AzureKeyVaultSecretProperties azureKeyVaultSecretProperties(AzureKeyVaultPropert return AzureServicePropertiesUtils.loadServiceCommonProperties(azureKeyVaultProperties, new AzureKeyVaultSecretProperties()); } - /** - * Autoconfigure the {@link SecretClient} instance. - * @param builder the {@link SecretClientBuilder} to build the instance. - * @return the secret client instance. - */ @Bean @ConditionalOnMissingBean - public SecretClient azureKeyVaultSecretClient(SecretClientBuilder builder) { + SecretClient azureKeyVaultSecretClient(SecretClientBuilder builder) { return builder.buildClient(); } - /** - * Autoconfigure the {@link SecretAsyncClient} instance. - * @param builder the {@link SecretClientBuilder} to build the instance. - * @return the secret async client instance. - */ @Bean @ConditionalOnMissingBean - public SecretAsyncClient azureKeyVaultSecretAsyncClient(SecretClientBuilder builder) { + SecretAsyncClient azureKeyVaultSecretAsyncClient(SecretClientBuilder builder) { return builder.buildAsyncClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/messaging/AzureMessagingListenerAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/messaging/AzureMessagingListenerAutoConfiguration.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/messaging/AzureMessagingListenerAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/messaging/AzureMessagingListenerAutoConfiguration.java index 340b85adbfb7..e341f523ffea 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/messaging/AzureMessagingListenerAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/messaging/AzureMessagingListenerAutoConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.messaging; +package com.azure.spring.cloud.autoconfigure.implementation.messaging; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsMessagingAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusMessagingAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsMessagingAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusMessagingAutoConfiguration; import com.azure.spring.messaging.eventhubs.core.EventHubsProcessorFactory; import com.azure.spring.messaging.eventhubs.core.listener.EventHubsMessageListenerContainer; import com.azure.spring.messaging.eventhubs.implementation.core.config.EventHubsMessageListenerContainerFactory; @@ -68,12 +68,12 @@ static class MessagingListenerCondition extends AnyNestedCondition { } @ConditionalOnClass(EventHubsMessageListenerContainer.class) - static class ConditonalOnEventHubs { + static class ConditionalOnEventHubs { } @ConditionalOnClass(ServiceBusMessageListenerContainer.class) - static class ConditonalOnServiceBus { + static class ConditionalOnServiceBus { } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/AzurePasswordlessEnvironmentPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/AzurePasswordlessEnvironmentPostProcessor.java index a8d13fdc9f51..6ffcfb07a20a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/AzurePasswordlessEnvironmentPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/AzurePasswordlessEnvironmentPostProcessor.java @@ -30,7 +30,7 @@ public class AzurePasswordlessEnvironmentPostProcessor implements EnvironmentPos public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { Properties properties = new Properties(); List passwordlessCredentialSupplier = new ArrayList<>(); - passwordlessCredentialSupplier.add("azureRedisCredentialSupplier"); + passwordlessCredentialSupplier.add("azureServiceBusJmsCredentialSupplier"); properties.setProperty("spring.cloud.function.ineligible-definitions", String.join(",", passwordlessCredentialSupplier)); environment.getPropertySources().addLast(new PropertiesPropertySource("passwordless", properties)); } diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureJdbcPasswordlessProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java similarity index 93% rename from sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureJdbcPasswordlessProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java index 0a30f73d82ac..f9951793aad1 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureJdbcPasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureJdbcPasswordlessProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.service.implementation.passwordless; +package com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties; import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; @@ -17,11 +17,6 @@ public class AzureJdbcPasswordlessProperties implements PasswordlessProperties { private static final String JDBC_SCOPE_AZURE = "https://ossrdbms-aad.database.windows.net/.default"; private static final String JDBC_SCOPE_AZURE_CHINA = "https://ossrdbms-aad.database.chinacloudapi.cn/.default"; - /** - * @deprecated AZURE_GERMANY is deprecated. Please use other JDBC scopes. - */ - @Deprecated - private static final String JDBC_SCOPE_AZURE_GERMANY = "https://ossrdbms-aad.database.cloudapi.de/.default"; private static final String JDBC_SCOPE_AZURE_US_GOVERNMENT = "https://ossrdbms-aad.database.usgovcloudapi.net/.default"; private static final Map JDBC_SCOPE_MAP = new HashMap() { diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureKafkaPasswordlessProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureKafkaPasswordlessProperties.java similarity index 96% rename from sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureKafkaPasswordlessProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureKafkaPasswordlessProperties.java index 9b99c5f0795f..e19b1b2a909d 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureKafkaPasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureKafkaPasswordlessProperties.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.service.implementation.passwordless; +package com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties; import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; import com.azure.spring.cloud.core.properties.profile.AzureProfileProperties; /** - * Configuration properties for passwordless connections with Azure ServiceBus. + * Configuration properties for passwordless connections with Azure Event Hubs Kafka. */ public class AzureKafkaPasswordlessProperties implements PasswordlessProperties { diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureRedisPasswordlessProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureRedisPasswordlessProperties.java similarity index 93% rename from sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureRedisPasswordlessProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureRedisPasswordlessProperties.java index 817c66cb80d1..15a766263b48 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzureRedisPasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/properties/AzureRedisPasswordlessProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.service.implementation.passwordless; +package com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties; import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; @@ -18,11 +18,6 @@ public class AzureRedisPasswordlessProperties implements PasswordlessProperties private static final String REDIS_SCOPE_AZURE = "https://redis.azure.com/.default"; private static final String REDIS_SCOPE_AZURE_CHINA = "https://*.cacheinfra.windows.net.china:10225/appid/.default"; - /** - * @deprecated AZURE_GERMANY is deprecated. Please use other Redis scopes. - */ - @Deprecated - static final String REDIS_SCOPE_AZURE_GERMANY = "https://*.cacheinfra.windows.net.germany:10225/appid/.default"; private static final String REDIS_SCOPE_AZURE_US_GOVERNMENT = "https://*.cacheinfra.windows.us.government.net:10225/appid/.default"; private static final Map REDIS_SCOPE_MAP = new HashMap() { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureHttpConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureHttpConfigurationProperties.java index 1fad07eed21a..ceabcf2fe390 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureHttpConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureHttpConfigurationProperties.java @@ -5,7 +5,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.HttpClientConfigurationProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.HttpProxyConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.retry.RetryConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.RetryConfigurationProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import org.springframework.boot.context.properties.NestedConfigurationProperty; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureServiceConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureServiceConfigurationProperties.java index 78924ef3b236..4be1778f1cb7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureServiceConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/AbstractAzureServiceConfigurationProperties.java @@ -3,9 +3,9 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.core; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties; import com.azure.spring.cloud.autoconfigure.implementation.properties.resourcemanager.AzureResourceMetadataConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties; import com.azure.spring.cloud.core.properties.AzureProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/authentication/TokenCredentialConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/authentication/TokenCredentialConfigurationProperties.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/authentication/TokenCredentialConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/authentication/TokenCredentialConfigurationProperties.java index 06e8ccf48893..b2e6f6062f51 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/authentication/TokenCredentialConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/authentication/TokenCredentialConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.authentication; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication; import com.azure.spring.cloud.core.provider.authentication.TokenCredentialOptionsProvider; @@ -52,10 +52,6 @@ public String getClientId() { return clientId; } - /** - * Set the client ID. - * @param clientId The client ID. - */ public void setClientId(String clientId) { this.clientId = clientId; } @@ -65,10 +61,6 @@ public String getClientSecret() { return clientSecret; } - /** - * Set the client secret. - * @param clientSecret The client secret. - */ public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } @@ -78,10 +70,6 @@ public String getClientCertificatePath() { return clientCertificatePath; } - /** - * Set the client certificate path. - * @param clientCertificatePath The client certificate path. - */ public void setClientCertificatePath(String clientCertificatePath) { this.clientCertificatePath = clientCertificatePath; } @@ -91,10 +79,6 @@ public String getClientCertificatePassword() { return clientCertificatePassword; } - /** - * Set the client certificate password. - * @param clientCertificatePassword The client certificate password. - */ public void setClientCertificatePassword(String clientCertificatePassword) { this.clientCertificatePassword = clientCertificatePassword; } @@ -104,10 +88,6 @@ public String getUsername() { return username; } - /** - * Set the username. - * @param username The username. - */ public void setUsername(String username) { this.username = username; } @@ -117,10 +97,6 @@ public String getPassword() { return password; } - /** - * Set the password. - * @param password The password. - */ public void setPassword(String password) { this.password = password; } @@ -130,10 +106,6 @@ public boolean isManagedIdentityEnabled() { return managedIdentityEnabled; } - /** - * Whether to enable managed identity. - * @param managedIdentityEnabled whether managed identity is enabled. - */ public void setManagedIdentityEnabled(boolean managedIdentityEnabled) { this.managedIdentityEnabled = managedIdentityEnabled; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/AmqpClientConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/AmqpClientConfigurationProperties.java index 79c57cf07427..10d52ad0fddc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/AmqpClientConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/AmqpClientConfigurationProperties.java @@ -4,7 +4,6 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.core.client; import com.azure.core.amqp.AmqpTransportType; -import com.azure.spring.cloud.autoconfigure.properties.core.client.ClientConfigurationProperties; import com.azure.spring.cloud.core.provider.ClientOptionsProvider; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/ClientConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/ClientConfigurationProperties.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/ClientConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/ClientConfigurationProperties.java index 4a0ddc2a8857..d3888b4a378a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/ClientConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/ClientConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.client; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.client; import com.azure.spring.cloud.core.provider.ClientOptionsProvider; @@ -20,10 +20,6 @@ public String getApplicationId() { return applicationId; } - /** - * Set the application id. - * @param applicationId The application id. - */ public void setApplicationId(String applicationId) { this.applicationId = applicationId; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpClientConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpClientConfigurationProperties.java index e0817eb331de..09428ab85e37 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpClientConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpClientConfigurationProperties.java @@ -3,8 +3,6 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.core.client; -import com.azure.spring.cloud.autoconfigure.properties.core.client.ClientConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.client.HttpLoggingConfigurationProperties; import com.azure.spring.cloud.core.properties.client.HeaderProperties; import com.azure.spring.cloud.core.provider.ClientOptionsProvider; import org.springframework.boot.context.properties.NestedConfigurationProperty; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/HttpLoggingConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpLoggingConfigurationProperties.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/HttpLoggingConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpLoggingConfigurationProperties.java index b4528c0f0f13..66e553230466 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/HttpLoggingConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/HttpLoggingConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.client; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.client; import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.spring.cloud.core.provider.HttpLoggingOptionsProvider; @@ -37,10 +37,6 @@ public HttpLogDetailLevel getLevel() { return level; } - /** - * Set the logging detail level. - * @param level The logging detail level. - */ public void setLevel(HttpLogDetailLevel level) { this.level = level; } @@ -60,10 +56,6 @@ public Boolean getPrettyPrintBody() { return prettyPrintBody; } - /** - * Set whether to pretty print body. - * @param prettyPrintBody Whether to pretty print body. - */ public void setPrettyPrintBody(Boolean prettyPrintBody) { this.prettyPrintBody = prettyPrintBody; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/profile/AzureProfileConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/profile/AzureProfileConfigurationProperties.java similarity index 68% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/profile/AzureProfileConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/profile/AzureProfileConfigurationProperties.java index 8cd5bc2f2b9b..542558ed03d0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/profile/AzureProfileConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/profile/AzureProfileConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.profile; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile; import com.azure.core.management.AzureEnvironment; import com.azure.spring.cloud.core.properties.profile.AzureProfileOptionsAdapter; @@ -32,10 +32,6 @@ public AzureProfileOptionsProvider.CloudType getCloudType() { return cloudType; } - /** - * Set the cloud type. - * @param cloudType the cloud type. - */ public void setCloudType(AzureProfileOptionsProvider.CloudType cloudType) { this.cloudType = cloudType; @@ -48,10 +44,6 @@ public String getTenantId() { return tenantId; } - /** - * Set the tenant ID. - * @param tenantId The tenant ID. - */ public void setTenantId(String tenantId) { this.tenantId = tenantId; } @@ -61,10 +53,6 @@ public String getSubscriptionId() { return subscriptionId; } - /** - * Set the subscription ID. - * @param subscriptionId The subscription ID. - */ public void setSubscriptionId(String subscriptionId) { this.subscriptionId = subscriptionId; } @@ -74,9 +62,6 @@ public AzureEnvironmentConfigurationProperties getEnvironment() { return this.environment; } - /** - * Azure environment configuration properties. - */ public static final class AzureEnvironmentConfigurationProperties implements AzureProfileOptionsProvider.AzureEnvironmentOptions { /** * The management portal URL. @@ -165,11 +150,6 @@ public String getPortal() { return portal; } - /** - * Sets the portal. - * - * @param portal The portal. - */ public void setPortal(String portal) { this.portal = portal; } @@ -179,11 +159,6 @@ public String getPublishingProfile() { return publishingProfile; } - /** - * Sets the publishing profile. - * - * @param publishingProfile The publishing profile. - */ public void setPublishingProfile(String publishingProfile) { this.publishingProfile = publishingProfile; } @@ -193,11 +168,6 @@ public String getManagementEndpoint() { return managementEndpoint; } - /** - * Sets the management endpoint. - * - * @param managementEndpoint The management endpoint. - */ public void setManagementEndpoint(String managementEndpoint) { this.managementEndpoint = managementEndpoint; } @@ -207,11 +177,6 @@ public String getResourceManagerEndpoint() { return resourceManagerEndpoint; } - /** - * Sets the resource manager endpoint. - * - * @param resourceManagerEndpoint The resource manager endpoint. - */ public void setResourceManagerEndpoint(String resourceManagerEndpoint) { this.resourceManagerEndpoint = resourceManagerEndpoint; } @@ -221,11 +186,6 @@ public String getSqlManagementEndpoint() { return sqlManagementEndpoint; } - /** - * Sets the SQL management endpoint. - * - * @param sqlManagementEndpoint The SQL management endpoint. - */ public void setSqlManagementEndpoint(String sqlManagementEndpoint) { this.sqlManagementEndpoint = sqlManagementEndpoint; } @@ -235,11 +195,6 @@ public String getSqlServerHostnameSuffix() { return sqlServerHostnameSuffix; } - /** - * Sets the SQL server hostname suffix. - * - * @param sqlServerHostnameSuffix The SQL server hostname suffix. - */ public void setSqlServerHostnameSuffix(String sqlServerHostnameSuffix) { this.sqlServerHostnameSuffix = sqlServerHostnameSuffix; } @@ -249,11 +204,6 @@ public String getGalleryEndpoint() { return galleryEndpoint; } - /** - * Sets the gallery endpoint. - * - * @param galleryEndpoint The gallery endpoint. - */ public void setGalleryEndpoint(String galleryEndpoint) { this.galleryEndpoint = galleryEndpoint; } @@ -263,11 +213,6 @@ public String getActiveDirectoryEndpoint() { return activeDirectoryEndpoint; } - /** - * Sets the active directory endpoint. - * - * @param activeDirectoryEndpoint The active directory endpoint. - */ public void setActiveDirectoryEndpoint(String activeDirectoryEndpoint) { this.activeDirectoryEndpoint = activeDirectoryEndpoint; } @@ -277,11 +222,6 @@ public String getActiveDirectoryResourceId() { return activeDirectoryResourceId; } - /** - * Sets the active directory resource ID. - * - * @param activeDirectoryResourceId The active directory resource ID. - */ public void setActiveDirectoryResourceId(String activeDirectoryResourceId) { this.activeDirectoryResourceId = activeDirectoryResourceId; } @@ -291,11 +231,6 @@ public String getActiveDirectoryGraphEndpoint() { return activeDirectoryGraphEndpoint; } - /** - * Sets the active directory graph endpoint. - * - * @param activeDirectoryGraphEndpoint The active directory graph endpoint. - */ public void setActiveDirectoryGraphEndpoint(String activeDirectoryGraphEndpoint) { this.activeDirectoryGraphEndpoint = activeDirectoryGraphEndpoint; } @@ -305,11 +240,6 @@ public String getActiveDirectoryGraphApiVersion() { return activeDirectoryGraphApiVersion; } - /** - * Sets the active directory graph API version. - * - * @param activeDirectoryGraphApiVersion The active directory graph API version. - */ public void setActiveDirectoryGraphApiVersion(String activeDirectoryGraphApiVersion) { this.activeDirectoryGraphApiVersion = activeDirectoryGraphApiVersion; } @@ -319,11 +249,6 @@ public String getMicrosoftGraphEndpoint() { return microsoftGraphEndpoint; } - /** - * Sets the Microsoft Graph endpoint. - * - * @param microsoftGraphEndpoint The Microsoft Graph endpoint. - */ public void setMicrosoftGraphEndpoint(String microsoftGraphEndpoint) { this.microsoftGraphEndpoint = microsoftGraphEndpoint; } @@ -333,11 +258,6 @@ public String getDataLakeEndpointResourceId() { return dataLakeEndpointResourceId; } - /** - * Sets the Data Lake endpoint resource ID. - * - * @param dataLakeEndpointResourceId The Data Lake endpoint resource ID. - */ public void setDataLakeEndpointResourceId(String dataLakeEndpointResourceId) { this.dataLakeEndpointResourceId = dataLakeEndpointResourceId; } @@ -347,11 +267,6 @@ public String getStorageEndpointSuffix() { return storageEndpointSuffix; } - /** - * Sets the Storage endpoint suffix. - * - * @param storageEndpointSuffix The Storage endpoint suffix. - */ public void setStorageEndpointSuffix(String storageEndpointSuffix) { this.storageEndpointSuffix = storageEndpointSuffix; } @@ -361,11 +276,6 @@ public String getKeyVaultDnsSuffix() { return keyVaultDnsSuffix; } - /** - * Sets the KeyVault DNS suffix. - * - * @param keyVaultDnsSuffix The KeyVault DNS suffix. - */ public void setKeyVaultDnsSuffix(String keyVaultDnsSuffix) { this.keyVaultDnsSuffix = keyVaultDnsSuffix; } @@ -375,11 +285,6 @@ public String getAzureDataLakeStoreFileSystemEndpointSuffix() { return azureDataLakeStoreFileSystemEndpointSuffix; } - /** - * Sets the Azure Data Lake Storage file system endpoint suffix. - * - * @param azureDataLakeStoreFileSystemEndpointSuffix The Azure Data Lake Storage file system endpoint suffix. - */ public void setAzureDataLakeStoreFileSystemEndpointSuffix(String azureDataLakeStoreFileSystemEndpointSuffix) { this.azureDataLakeStoreFileSystemEndpointSuffix = azureDataLakeStoreFileSystemEndpointSuffix; } @@ -389,12 +294,6 @@ public String getAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix() { return azureDataLakeAnalyticsCatalogAndJobEndpointSuffix; } - /** - * Sets the Azure Data Lake analytics catalog and job endpoint suffix. - * - * @param azureDataLakeAnalyticsCatalogAndJobEndpointSuffix The Azure Data Lake analytics catalog and job - * endpoint suffix. - */ public void setAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(String azureDataLakeAnalyticsCatalogAndJobEndpointSuffix) { this.azureDataLakeAnalyticsCatalogAndJobEndpointSuffix = azureDataLakeAnalyticsCatalogAndJobEndpointSuffix; } @@ -404,11 +303,6 @@ public String getAzureLogAnalyticsEndpoint() { return azureLogAnalyticsEndpoint; } - /** - * Sets the Azure log analytics endpoint. - * - * @param azureLogAnalyticsEndpoint The Azure log analytics endpoint. - */ public void setAzureLogAnalyticsEndpoint(String azureLogAnalyticsEndpoint) { this.azureLogAnalyticsEndpoint = azureLogAnalyticsEndpoint; } @@ -418,11 +312,6 @@ public String getAzureApplicationInsightsEndpoint() { return azureApplicationInsightsEndpoint; } - /** - * Sets the Azure Application Insights endpoint. - * - * @param azureApplicationInsightsEndpoint The Azure Application Insights endpoint. - */ public void setAzureApplicationInsightsEndpoint(String azureApplicationInsightsEndpoint) { this.azureApplicationInsightsEndpoint = azureApplicationInsightsEndpoint; } @@ -440,32 +329,31 @@ public void setServiceBusDomainName(String serviceBusDomainName) { this.serviceBusDomainName = serviceBusDomainName; } - private AzureEnvironmentConfigurationProperties(com.azure.core.management.AzureEnvironment management) { - if (management == null) { + private AzureEnvironmentConfigurationProperties(com.azure.core.management.AzureEnvironment azureEnvironment) { + if (azureEnvironment == null) { return; } - this.portal = management.getPortal(); - this.publishingProfile = management.getPublishingProfile(); - this.managementEndpoint = management.getManagementEndpoint(); - this.resourceManagerEndpoint = management.getResourceManagerEndpoint(); - this.sqlManagementEndpoint = management.getSqlManagementEndpoint(); - this.sqlServerHostnameSuffix = management.getSqlServerHostnameSuffix(); - this.galleryEndpoint = management.getGalleryEndpoint(); - this.activeDirectoryEndpoint = management.getActiveDirectoryEndpoint(); - this.activeDirectoryResourceId = management.getActiveDirectoryResourceId(); - this.activeDirectoryGraphEndpoint = management.getGraphEndpoint(); - this.activeDirectoryGraphApiVersion = management.getActiveDirectoryGraphApiVersion(); - this.microsoftGraphEndpoint = management.getMicrosoftGraphEndpoint(); - this.dataLakeEndpointResourceId = management.getDataLakeEndpointResourceId(); - this.storageEndpointSuffix = management.getStorageEndpointSuffix(); - this.keyVaultDnsSuffix = management.getKeyVaultDnsSuffix(); - this.azureDataLakeStoreFileSystemEndpointSuffix = management.getAzureDataLakeStoreFileSystemEndpointSuffix(); - this.azureDataLakeAnalyticsCatalogAndJobEndpointSuffix = management.getAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(); - this.azureLogAnalyticsEndpoint = management.getLogAnalyticsEndpoint(); - this.azureApplicationInsightsEndpoint = management.getApplicationInsightsEndpoint(); + this.portal = azureEnvironment.getPortal(); + this.publishingProfile = azureEnvironment.getPublishingProfile(); + this.managementEndpoint = azureEnvironment.getManagementEndpoint(); + this.resourceManagerEndpoint = azureEnvironment.getResourceManagerEndpoint(); + this.sqlManagementEndpoint = azureEnvironment.getSqlManagementEndpoint(); + this.sqlServerHostnameSuffix = azureEnvironment.getSqlServerHostnameSuffix(); + this.galleryEndpoint = azureEnvironment.getGalleryEndpoint(); + this.activeDirectoryEndpoint = azureEnvironment.getActiveDirectoryEndpoint(); + this.activeDirectoryResourceId = azureEnvironment.getActiveDirectoryResourceId(); + this.activeDirectoryGraphEndpoint = azureEnvironment.getGraphEndpoint(); + this.activeDirectoryGraphApiVersion = azureEnvironment.getActiveDirectoryGraphApiVersion(); + this.microsoftGraphEndpoint = azureEnvironment.getMicrosoftGraphEndpoint(); + this.dataLakeEndpointResourceId = azureEnvironment.getDataLakeEndpointResourceId(); + this.storageEndpointSuffix = azureEnvironment.getStorageEndpointSuffix(); + this.keyVaultDnsSuffix = azureEnvironment.getKeyVaultDnsSuffix(); + this.azureDataLakeStoreFileSystemEndpointSuffix = azureEnvironment.getAzureDataLakeStoreFileSystemEndpointSuffix(); + this.azureDataLakeAnalyticsCatalogAndJobEndpointSuffix = azureEnvironment.getAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(); + this.azureLogAnalyticsEndpoint = azureEnvironment.getLogAnalyticsEndpoint(); + this.azureApplicationInsightsEndpoint = azureEnvironment.getApplicationInsightsEndpoint(); } - @Override public AzureProfileOptionsProvider.AzureEnvironmentOptions fromAzureManagementEnvironment(AzureEnvironment environment) { return new AzureEnvironmentConfigurationProperties(environment); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/AmqpProxyConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/AmqpProxyConfigurationProperties.java index bdd0c200e166..e2a03f7f58d1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/AmqpProxyConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/AmqpProxyConfigurationProperties.java @@ -4,7 +4,6 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy; -import com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties; import com.azure.spring.cloud.core.provider.ProxyOptionsProvider; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/HttpProxyConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/HttpProxyConfigurationProperties.java index 3cf0b0b4bf89..4f8211599543 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/HttpProxyConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/HttpProxyConfigurationProperties.java @@ -3,7 +3,6 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy; -import com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties; import com.azure.spring.cloud.core.provider.ProxyOptionsProvider; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/proxy/ProxyConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/ProxyConfigurationProperties.java similarity index 76% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/proxy/ProxyConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/ProxyConfigurationProperties.java index c45c36a5baf7..40358569003f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/proxy/ProxyConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/proxy/ProxyConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.proxy; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy; import com.azure.spring.cloud.core.provider.ProxyOptionsProvider; @@ -36,10 +36,6 @@ public String getType() { return type; } - /** - * Set proxy type. - * @param type The proxy type. - */ public void setType(String type) { this.type = type; } @@ -49,10 +45,6 @@ public String getHostname() { return hostname; } - /** - * Set proxy hostname. - * @param hostname The hostname. - */ public void setHostname(String hostname) { this.hostname = hostname; } @@ -62,10 +54,6 @@ public Integer getPort() { return port; } - /** - * Set port. - * @param port The port of the host. - */ public void setPort(Integer port) { this.port = port; } @@ -75,10 +63,6 @@ public String getUsername() { return username; } - /** - * Set the username used for authentication. - * @param username The username. - */ public void setUsername(String username) { this.username = username; } @@ -88,10 +72,6 @@ public String getPassword() { return password; } - /** - * Set the password for authentication. - * @param password The password. - */ public void setPassword(String password) { this.password = password; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/AmqpRetryConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/AmqpRetryConfigurationProperties.java index 16171be3a8fe..f008bf08a240 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/AmqpRetryConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/AmqpRetryConfigurationProperties.java @@ -3,7 +3,6 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry; -import com.azure.spring.cloud.autoconfigure.properties.core.retry.RetryConfigurationProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import java.time.Duration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/ExponentialRetryConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/ExponentialRetryConfigurationProperties.java similarity index 70% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/ExponentialRetryConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/ExponentialRetryConfigurationProperties.java index ba50fbc06c7b..6d9511446f17 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/ExponentialRetryConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/ExponentialRetryConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.retry; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; @@ -30,10 +30,6 @@ public Integer getMaxRetries() { return maxRetries; } - /** - * Set the maximum number of attempts. - * @param maxRetries the maximum number of attempts. - */ public void setMaxRetries(Integer maxRetries) { this.maxRetries = maxRetries; } @@ -43,10 +39,6 @@ public Duration getBaseDelay() { return baseDelay; } - /** - * Set the amount of time to wait between retry attempts. - * @param baseDelay The delay to wait between retry attempts. - */ public void setBaseDelay(Duration baseDelay) { this.baseDelay = baseDelay; } @@ -56,10 +48,6 @@ public Duration getMaxDelay() { return maxDelay; } - /** - * Set the maximum permissible amount of time between retry attempts. - * @param maxDelay The maximum permissible amount of time between retry attempts. - */ public void setMaxDelay(Duration maxDelay) { this.maxDelay = maxDelay; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/FixedRetryConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/FixedRetryConfigurationProperties.java similarity index 72% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/FixedRetryConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/FixedRetryConfigurationProperties.java index 44902a1e9162..07b1ff36fef7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/FixedRetryConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/FixedRetryConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.retry; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; @@ -26,11 +26,6 @@ public Integer getMaxRetries() { return maxRetries; } - /** - * Set the maximum number attempts. - * - * @param maxRetries the maximum number attempts. - */ public void setMaxRetries(Integer maxRetries) { this.maxRetries = maxRetries; } @@ -40,11 +35,6 @@ public Duration getDelay() { return delay; } - /** - * Set the amount of time to wait between retry attempts. - * - * @param delay the amount of time to wait between retry attempts. - */ public void setDelay(Duration delay) { this.delay = delay; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/RetryConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/RetryConfigurationProperties.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/RetryConfigurationProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/RetryConfigurationProperties.java index 2954dbeafd09..11d3f7cf7c85 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/RetryConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/retry/RetryConfigurationProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.properties.core.retry; +package com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import org.springframework.boot.context.properties.NestedConfigurationProperty; @@ -28,11 +28,6 @@ public RetryOptionsProvider.RetryMode getMode() { return mode; } - /** - * Set the mode for retry backoff. - * - * @param mode the mode for retry backoff. - */ public void setMode(RetryOptionsProvider.RetryMode mode) { this.mode = mode; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/utils/AzureGlobalPropertiesUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/utils/AzureGlobalPropertiesUtils.java index 764534c58050..1b40ebec1e39 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/utils/AzureGlobalPropertiesUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/utils/AzureGlobalPropertiesUtils.java @@ -3,7 +3,7 @@ package com.azure.spring.cloud.autoconfigure.implementation.properties.utils; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils; import com.azure.spring.cloud.core.properties.AzureProperties; import com.azure.spring.cloud.core.provider.ClientOptionsProvider; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureRedisAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisAutoConfiguration.java similarity index 70% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureRedisAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisAutoConfiguration.java index 2110be9a076d..f43140b3a612 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureRedisAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisAutoConfiguration.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.redis; +package com.azure.spring.cloud.autoconfigure.implementation.redis; import com.azure.resourcemanager.AzureResourceManager; import com.azure.resourcemanager.redis.models.RedisCache; -import com.azure.spring.cloud.autoconfigure.implementation.redis.AzureRedisProperties; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.redis.properties.AzureRedisProperties; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureResourceManagerAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -19,7 +19,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.redis.core.RedisOperations; +import org.springframework.util.ReflectionUtils; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Arrays; /** @@ -39,7 +42,8 @@ public class AzureRedisAutoConfiguration { @Primary @Bean RedisProperties redisProperties(AzureRedisProperties azureRedisProperties, - AzureResourceManager azureResourceManager) { + AzureResourceManager azureResourceManager) throws InvocationTargetException, + IllegalAccessException { String cacheName = azureRedisProperties.getName(); String resourceGroup = azureRedisProperties.getResource().getResourceGroup(); @@ -63,7 +67,22 @@ RedisProperties redisProperties(AzureRedisProperties azureRedisProperties, } redisProperties.setPassword(redisCache.keys().primaryKey()); - redisProperties.setSsl(useSsl); + Method setSsl = ReflectionUtils.findMethod(RedisProperties.class, "setSsl", boolean.class); + if (setSsl == null) { + Object ssl = ReflectionUtils.findMethod(RedisProperties.class, "getSsl").invoke(redisProperties); + Class[] innerClasses = RedisProperties.class.getDeclaredClasses(); + Class targetInnerClass = null; + for (Class innerClass : innerClasses) { + if (innerClass.getSimpleName().equals("Ssl")) { + targetInnerClass = innerClass; + break; + } + } + ReflectionUtils.findMethod(targetInnerClass, "setEnabled", boolean.class) + .invoke(ssl, useSsl); + } else { + setSsl.invoke(redisProperties, useSsl); + } return redisProperties; } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnection.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnection.java deleted file mode 100644 index a2bd0cd77af9..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnection.java +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis; - -import org.springframework.data.redis.connection.jedis.JedisConnection; -import org.springframework.lang.Nullable; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisClientConfig; -import redis.clients.jedis.util.Pool; - -class AzureJedisConnection extends JedisConnection { - - protected AzureJedisConnection(Jedis jedis, - @Nullable Pool pool, - JedisClientConfig nodeConfig, - JedisClientConfig sentinelConfig) { - super(jedis, pool, nodeConfig, sentinelConfig); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnectionFactory.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnectionFactory.java deleted file mode 100644 index ffb5e40f7ee0..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnectionFactory.java +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis; - -import com.azure.spring.cloud.service.implementation.redis.AzureJedisClientConfig; -import com.azure.spring.cloud.service.implementation.redis.AzureJedisPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.dao.DataAccessException; -import org.springframework.data.redis.RedisConnectionFailureException; -import org.springframework.data.redis.connection.RedisClusterConnection; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.connection.RedisPassword; -import org.springframework.data.redis.connection.RedisSentinelConnection; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; -import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; -import org.springframework.data.redis.connection.jedis.JedisConnection; -import org.springframework.lang.Nullable; -import org.springframework.util.Assert; -import org.springframework.util.ObjectUtils; -import redis.clients.jedis.HostAndPort; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisClientConfig; -import redis.clients.jedis.util.Pool; - -import java.util.function.Supplier; - -/** - * Connection factory creating Jedis based connections to Azure Redis. - * - * @since 4.6.0 - */ -public class AzureJedisConnectionFactory implements InitializingBean, DisposableBean, RedisConnectionFactory { - - private static final Logger LOGGER = LoggerFactory.getLogger(AzureJedisConnectionFactory.class); - - private final RedisStandaloneConfiguration standaloneConfig; - - private final Supplier credentialSupplier; - private final JedisClientConfiguration clientConfiguration; - private JedisClientConfig jedisClientConfig; - private @Nullable Pool pool; - private boolean initialized; - private boolean destroyed; - - private boolean convertPipelineAndTxResults = true; - - /** - * Constructs a new AzureJedisConnectionFactory instance using the given RedisStandaloneConfiguration, JedisClientConfiguration and CredentialSupplier. - * - * @param standaloneConfig must not be {@literal null}. - * @param clientConfiguration must not be {@literal null}. - * @param credentialSupplier must not be {@literal null}. - */ - public AzureJedisConnectionFactory(RedisStandaloneConfiguration standaloneConfig, JedisClientConfiguration clientConfiguration, Supplier credentialSupplier) { - this.standaloneConfig = standaloneConfig; - this.clientConfiguration = clientConfiguration; - this.credentialSupplier = credentialSupplier; - } - - @Override - public void afterPropertiesSet() { - this.jedisClientConfig = createClientConfig(this.standaloneConfig, this.clientConfiguration); - - if (getUsePool()) { - this.pool = createRedisPool(); - } - this.initialized = true; - } - - @Override - public RedisClusterConnection getClusterConnection() { - throw new UnsupportedOperationException("This operation is not supported"); - } - - @Override - public boolean getConvertPipelineAndTxResults() { - return this.convertPipelineAndTxResults; - } - - @Override - public RedisSentinelConnection getSentinelConnection() { - throw new UnsupportedOperationException("This operation is not supported"); - } - - @Override - public void destroy() { - if (getUsePool() && pool != null) { - - try { - pool.destroy(); - } catch (Exception ex) { - LOGGER.warn("Cannot properly close Jedis pool", ex); - } - pool = null; - } - - this.destroyed = true; - } - - @Override - public DataAccessException translateExceptionIfPossible(RuntimeException ex) { - throw new UnsupportedOperationException("This operation is not supported"); - } - - @Override - public RedisConnection getConnection() { - assertInitialized(); - - Jedis jedis = fetchJedisConnector(); - - JedisClientConfig sentinelConfig = this.jedisClientConfig; - - JedisConnection connection = (getUsePool() ? new AzureJedisConnection(jedis, pool, this.jedisClientConfig, sentinelConfig) - : new AzureJedisConnection(jedis, null, this.jedisClientConfig, sentinelConfig)); - connection.setConvertPipelineAndTxResults(convertPipelineAndTxResults); - return postProcessConnection(connection); - } - - /** - * Specifies if pipelined results should be converted to the expected data type. If false, results of - * {@link JedisConnection#closePipeline()} and {@link JedisConnection#exec()} will be of the type returned by the - * Jedis driver. - * - * @param convertPipelineAndTxResults Whether or not to convert pipeline and tx results. - */ - public void setConvertPipelineAndTxResults(boolean convertPipelineAndTxResults) { - this.convertPipelineAndTxResults = convertPipelineAndTxResults; - } - - /** - * Indicates the use of a connection pool. - *

- * Applies only to single node Redis. - * - * @return the use of connection pooling. - */ - public boolean getUsePool() { - return clientConfiguration.isUsePooling(); - } - - private JedisConnection postProcessConnection(JedisConnection connection) { - return connection; - } - - @SuppressWarnings("unchecked") - private Pool createRedisPool() { - return new AzureJedisPool(this.clientConfiguration.getPoolConfig().get(), - new HostAndPort(this.standaloneConfig.getHostName(), this.standaloneConfig.getPort()), - this.jedisClientConfig); - } - - /** - * Returns a Jedis instance to be used as a Redis connection. The instance can be newly created or retrieved from a - * pool. - * - * @return Jedis instance ready for wrapping into a {@link RedisConnection}. - * @throws RedisConnectionFailureException when can't fetch a jedis instance. - */ - protected Jedis fetchJedisConnector() { - try { - - if (getUsePool() && pool != null) { - LOGGER.info("Get connection from pool."); - return pool.getResource(); - } - - Jedis jedis = createJedis(); - // force initialization (see Jedis issue #82) - jedis.connect(); - - return jedis; - } catch (Exception ex) { - throw new RedisConnectionFailureException("Cannot get Jedis connection", ex); - } - } - - private Jedis createJedis() { - return new Jedis(new HostAndPort(this.standaloneConfig.getHostName(), this.standaloneConfig.getPort()), this.jedisClientConfig); - } - - private JedisClientConfig createClientConfig(RedisStandaloneConfiguration standaloneConfig, - JedisClientConfiguration clientConfig) { - - String username = standaloneConfig.getUsername(); - RedisPassword password = standaloneConfig.getPassword(); - - AzureJedisClientConfig.Builder builder = AzureJedisClientConfig.builder(); - - clientConfig.getClientName().ifPresent(builder::clientName); - builder.connectionTimeoutMillis(Math.toIntExact(clientConfig.getConnectTimeout().toMillis())); - builder.socketTimeoutMillis(Math.toIntExact(clientConfig.getReadTimeout().toMillis())); - - builder.database(standaloneConfig.getDatabase()); - - if (!ObjectUtils.isEmpty(username)) { - builder.user(username); - } - - password.toOptional().map(String::new).ifPresent(builder::password); - - builder.credentialSupplier(credentialSupplier); - - if (clientConfig.isUseSsl()) { - - builder.ssl(true); - - clientConfig.getSslSocketFactory().ifPresent(builder::sslSocketFactory); - clientConfig.getHostnameVerifier().ifPresent(builder::hostnameVerifier); - clientConfig.getSslParameters().ifPresent(builder::sslParameters); - } - - return builder.build(); - } - - private void assertInitialized() { - Assert.state(this.initialized, "JedisConnectionFactory was not initialized through afterPropertiesSet()"); - Assert.state(!this.destroyed, "JedisConnectionFactory was destroyed and cannot be used anymore"); - } - - void setPool(@Nullable Pool pool) { - this.pool = pool; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisCredentialSupplier.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisCredentialSupplier.java deleted file mode 100644 index 0a1fb119112c..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisCredentialSupplier.java +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis; - -import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; - -import java.util.Properties; -import java.util.function.Supplier; - -/** - * AzureRedisCredentialSupplier that provide a String as the password to connect Azure Redis. - * - * @since 4.6.0 - */ -public class AzureRedisCredentialSupplier implements Supplier { - - private final AzureAuthenticationTemplate azureAuthenticationTemplate; - - /** - * Create {@link AzureRedisCredentialSupplier} instance. - * @param properties properties to initialize AzureRedisCredentialSupplier. - */ - public AzureRedisCredentialSupplier(Properties properties) { - azureAuthenticationTemplate = new AzureAuthenticationTemplate(); - azureAuthenticationTemplate.init(properties); - } - - @Override - public String get() { - return azureAuthenticationTemplate.getTokenAsPassword(); - } - - AzureRedisCredentialSupplier(AzureAuthenticationTemplate azureAuthenticationTemplate) { - this.azureAuthenticationTemplate = azureAuthenticationTemplate; - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/properties/AzureRedisProperties.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisProperties.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/properties/AzureRedisProperties.java index 404a5fd05e81..89dceea458e1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/redis/properties/AzureRedisProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.implementation.redis; +package com.azure.spring.cloud.autoconfigure.implementation.redis.properties; import com.azure.spring.cloud.autoconfigure.implementation.properties.resourcemanager.AzureResourceMetadataConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureEventHubsResourceManagerAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureEventHubsResourceManagerAutoConfiguration.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureEventHubsResourceManagerAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureEventHubsResourceManagerAutoConfiguration.java index d39277e13de8..d5d9b741941c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureEventHubsResourceManagerAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureEventHubsResourceManagerAutoConfiguration.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnMissingProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnMissingProperty; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; -import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.EventHubsResourceMetadata; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.EventHubsArmConnectionStringProvider; import com.azure.spring.cloud.resourcemanager.implementation.provisioning.DefaultEventHubsProvisioner; -import com.azure.spring.cloud.resourcemanager.provisioning.EventHubsProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.EventHubsProvisioner; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -34,11 +33,6 @@ public class AzureEventHubsResourceManagerAutoConfiguration extends AzureService private final EventHubsResourceMetadata resourceMetadata; - /** - * Create {@link AzureEventHubsResourceManagerAutoConfiguration} instance - * @param azureResourceManager the azure resource manager - * @param resourceMetadata the Event Hubs resource metadata - */ AzureEventHubsResourceManagerAutoConfiguration(AzureResourceManager azureResourceManager, EventHubsResourceMetadata resourceMetadata) { super(azureResourceManager); @@ -56,13 +50,9 @@ EventHubsArmConnectionStringProvider eventHubsArmConnectionStringProvider() { resourceMetadata.getName()); } - /** - * Autoconfigure the {@link EventHubsProvisioner} instance. - * @return the Event Hubs provisioner. - */ @Bean @ConditionalOnMissingBean - public EventHubsProvisioner eventHubsProvisioner() { + EventHubsProvisioner eventHubsProvisioner() { return new DefaultEventHubsProvisioner(this.azureResourceManager, this.resourceMetadata); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureResourceManagerAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureResourceManagerAutoConfiguration.java similarity index 69% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureResourceManagerAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureResourceManagerAutoConfiguration.java index 5c895f0bcb61..c2ee35deaa07 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureResourceManagerAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureResourceManagerAutoConfiguration.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.core.credential.TokenCredential; import com.azure.core.management.profile.AzureProfile; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; @@ -29,35 +29,21 @@ public class AzureResourceManagerAutoConfiguration { private final AzureGlobalProperties globalProperties; - /** - * Create {@link AzureResourceManagerAutoConfiguration} instance - * @param globalProperties the azure global properties - */ AzureResourceManagerAutoConfiguration(AzureGlobalProperties globalProperties) { this.globalProperties = globalProperties; } - /** - * Autoconfigure the {@link AzureResourceManager} instance. - * @param tokenCredential the {@link TokenCredential} used to authenticate with the {@link AzureResourceManager}. - * @param azureProfile the {@link AzureProfile} used by the {@link AzureResourceManager}. - * @return the Azure resource manager. - */ @Bean @ConditionalOnMissingBean - public AzureResourceManager azureResourceManager(TokenCredential tokenCredential, AzureProfile azureProfile) { + AzureResourceManager azureResourceManager(TokenCredential tokenCredential, AzureProfile azureProfile) { // TODO (xiada) Do we need to pass our User-Agent to with the management sdk? // TODO (xiada) configure the http client of arm client return AzureResourceManager.configure().authenticate(tokenCredential, azureProfile).withDefaultSubscription(); } - /** - * Autoconfigure the {@link AzureProfile} instance. - * @return the azure profile. - */ @Bean @ConditionalOnMissingBean - public AzureProfile azureProfile() { + AzureProfile azureProfile() { return new AzureProfile(this.globalProperties.getProfile().getTenantId(), this.globalProperties.getProfile().getSubscriptionId(), this.globalProperties.getProfile().getEnvironment().toAzureManagementEnvironment()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceBusResourceManagerAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceBusResourceManagerAutoConfiguration.java similarity index 79% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceBusResourceManagerAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceBusResourceManagerAutoConfiguration.java index 2418ddbfe466..ce7c1aaba138 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceBusResourceManagerAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceBusResourceManagerAutoConfiguration.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnMissingProperty; -import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.ServiceBusResourceMetadata; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnMissingProperty; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.ServiceBusArmConnectionStringProvider; import com.azure.spring.cloud.resourcemanager.implementation.provisioning.DefaultServiceBusProvisioner; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.ServiceBusProvisioner; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -34,24 +33,15 @@ public class AzureServiceBusResourceManagerAutoConfiguration extends AzureServic private final ServiceBusResourceMetadata resourceMetadata; - /** - * Create {@link AzureServiceBusResourceManagerAutoConfiguration} instance - * @param azureResourceManager the azure resource manager - * @param resourceMetadata the Service Bus resource metadata - */ AzureServiceBusResourceManagerAutoConfiguration(AzureResourceManager azureResourceManager, ServiceBusResourceMetadata resourceMetadata) { super(azureResourceManager); this.resourceMetadata = resourceMetadata; } - /** - * Autoconfigure the {@link ServiceBusProvisioner} instance. - * @return the Service Bus provisioner. - */ @Bean @ConditionalOnMissingBean - public ServiceBusProvisioner serviceBusProvisioner() { + ServiceBusProvisioner serviceBusProvisioner() { return new DefaultServiceBusProvisioner(this.azureResourceManager, this.resourceMetadata); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceResourceManagerConfigurationBase.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceResourceManagerConfigurationBase.java new file mode 100644 index 000000000000..9342647b0558 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceResourceManagerConfigurationBase.java @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; + +import com.azure.resourcemanager.AzureResourceManager; +import org.springframework.context.annotation.Configuration; + +@Configuration(proxyBeanMethods = false) +abstract class AzureServiceResourceManagerConfigurationBase { + + /** + * The resource manager. + */ + protected AzureResourceManager azureResourceManager; + + AzureServiceResourceManagerConfigurationBase(AzureResourceManager azureResourceManager) { + this.azureResourceManager = azureResourceManager; + } + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureStorageQueueResourceManagerAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureStorageQueueResourceManagerAutoConfiguration.java similarity index 86% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureStorageQueueResourceManagerAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureStorageQueueResourceManagerAutoConfiguration.java index 01f860fff346..132723ca57d5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureStorageQueueResourceManagerAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureStorageQueueResourceManagerAutoConfiguration.java @@ -1,10 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.StorageQueueResourceMetadata; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.StorageQueueArmConnectionStringProvider; import org.springframework.boot.autoconfigure.AutoConfigureAfter; @@ -31,11 +30,6 @@ public class AzureStorageQueueResourceManagerAutoConfiguration extends AzureServ private final StorageQueueResourceMetadata resourceMetadata; - /** - * Create {@link AzureStorageQueueResourceManagerAutoConfiguration} instance - * @param azureResourceManager the azure resource manager - * @param resourceMetadata the Storage Queue resource metadata - */ AzureStorageQueueResourceManagerAutoConfiguration(AzureResourceManager azureResourceManager, StorageQueueResourceMetadata resourceMetadata) { super(azureResourceManager); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfiguration.java similarity index 86% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfiguration.java index e99f45605827..f698130b43c9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfiguration.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusClientBuilderConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfiguration.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusClientBuilderConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfiguration.java index 8acbc7243eb7..ca51da2817cd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusClientBuilderConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -52,7 +52,7 @@ ServiceBusClientBuilder serviceBusClientBuilder(ServiceBusClientBuilderFactory f @Bean @ConditionalOnProperty("spring.cloud.azure.servicebus.connection-string") - public StaticConnectionStringProvider staticServiceBusConnectionStringProvider() { + StaticConnectionStringProvider staticServiceBusConnectionStringProvider() { return new StaticConnectionStringProvider<>(AzureServiceType.SERVICE_BUS, this.serviceBusProperties.getConnectionString()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusConsumerClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerClientConfiguration.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusConsumerClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerClientConfiguration.java index d60c532cfaa5..027a7d76b2d9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusConsumerClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerClientConfiguration.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.ServiceBusReceiverAsyncClient; import com.azure.messaging.servicebus.ServiceBusReceiverClient; import com.azure.messaging.servicebus.ServiceBusSessionReceiverAsyncClient; import com.azure.messaging.servicebus.ServiceBusSessionReceiverClient; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusConsumerCondition; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -74,14 +73,14 @@ ServiceBusClientBuilder.ServiceBusReceiverClientBuilder serviceBusReceiverClient @Bean @ConditionalOnMissingBean - public ServiceBusReceiverAsyncClient serviceBusReceiverAsyncClient( + ServiceBusReceiverAsyncClient serviceBusReceiverAsyncClient( ServiceBusClientBuilder.ServiceBusReceiverClientBuilder receiverClientBuilder) { return receiverClientBuilder.buildAsyncClient(); } @Bean @ConditionalOnMissingBean - public ServiceBusReceiverClient serviceBusReceiverClient( + ServiceBusReceiverClient serviceBusReceiverClient( ServiceBusClientBuilder.ServiceBusReceiverClientBuilder receiverClientBuilder) { return receiverClientBuilder.buildClient(); } @@ -122,14 +121,14 @@ ServiceBusClientBuilder.ServiceBusSessionReceiverClientBuilder serviceBusSession @Bean @ConditionalOnMissingBean - public ServiceBusSessionReceiverAsyncClient serviceBusSessionReceiverAsyncClient( + ServiceBusSessionReceiverAsyncClient serviceBusSessionReceiverAsyncClient( ServiceBusClientBuilder.ServiceBusSessionReceiverClientBuilder receiverClientBuilder) { return receiverClientBuilder.buildAsyncClient(); } @Bean @ConditionalOnMissingBean - public ServiceBusSessionReceiverClient serviceBusSessionReceiverClient( + ServiceBusSessionReceiverClient serviceBusSessionReceiverClient( ServiceBusClientBuilder.ServiceBusSessionReceiverClientBuilder receiverClientBuilder) { return receiverClientBuilder.buildClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerCondition.java index b12722c7e3a8..11d8d8f9294c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerCondition.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; -public class AzureServiceBusConsumerCondition extends SpringBootCondition { +class AzureServiceBusConsumerCondition extends SpringBootCondition { @Override public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusMessagingAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfiguration.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusMessagingAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfiguration.java index dd4e99e9e1a9..9f49827d8859 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusMessagingAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfiguration.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; @@ -18,7 +18,7 @@ import com.azure.spring.messaging.servicebus.core.properties.NamespaceProperties; import com.azure.spring.messaging.servicebus.core.properties.ProcessorProperties; import com.azure.spring.messaging.servicebus.core.properties.ProducerProperties; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,44 +73,24 @@ NamespaceProperties serviceBusNamespaceProperties(AzureServiceBusProperties prop return namespaceProperties; } - /** - * Configure the {@link ServiceBusProcessorFactory} - */ @Configuration(proxyBeanMethods = false) - public static class ProcessorContainerConfiguration { + static class ProcessorContainerConfiguration { - /** - * Creates a default Service Bus namespace processor factory. - * - * @param properties Service Bus namespace properties. - * @param suppliers ObjectProvider suppliers. - * @return A default Service Bus namespace processor factory. - */ @Bean @ConditionalOnMissingBean - public ServiceBusProcessorFactory defaultServiceBusNamespaceProcessorFactory( + ServiceBusProcessorFactory defaultServiceBusNamespaceProcessorFactory( NamespaceProperties properties, ObjectProvider> suppliers) { return new DefaultServiceBusNamespaceProcessorFactory(properties, suppliers.getIfAvailable()); } } - /** - * Configure the {@link ServiceBusTemplate} - */ @Configuration(proxyBeanMethods = false) - public static class ServiceBusTemplateConfiguration { + static class ServiceBusTemplateConfiguration { - /** - * Creates a default Service Bus namespace producer factory. - * - * @param properties Service Bus namespace properties. - * @param suppliers ObjectProvider suppliers. - * @return A default Service Bus namespace producer factory. - */ @Bean @ConditionalOnMissingBean - public ServiceBusProducerFactory defaultServiceBusNamespaceProducerFactory( + ServiceBusProducerFactory defaultServiceBusNamespaceProducerFactory( NamespaceProperties properties, ObjectProvider> suppliers) { return new DefaultServiceBusNamespaceProducerFactory(properties, suppliers.getIfAvailable()); @@ -130,17 +110,10 @@ ServiceBusMessageConverter serviceBusMessageConverter(ObjectMapper objectMapper) return new ServiceBusMessageConverter(objectMapper); } - /** - * Creates a Service Bus template. - * - * @param senderClientfactory A Service Bus producer factory. - * @param messageConverter A Service Bus message converter. - * @return A Service Bus template. - */ @Bean @ConditionalOnMissingBean @ConditionalOnBean(ServiceBusProducerFactory.class) - public ServiceBusTemplate serviceBusTemplate(ServiceBusProducerFactory senderClientfactory, + ServiceBusTemplate serviceBusTemplate(ServiceBusProducerFactory senderClientfactory, ServiceBusMessageConverter messageConverter) { ServiceBusTemplate serviceBusTemplate = new ServiceBusTemplate(senderClientfactory); serviceBusTemplate.setMessageConverter(messageConverter); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProcessorClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorClientConfiguration.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProcessorClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorClientConfiguration.java index cb9e46c84b74..43873b027899 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProcessorClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorClientConfiguration.java @@ -1,12 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.ServiceBusProcessorClient; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; -import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusProcessorCondition; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -14,9 +13,9 @@ import com.azure.spring.cloud.core.service.AzureServiceType; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusProcessorClientBuilderFactory; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusSessionProcessorClientBuilderFactory; +import com.azure.spring.cloud.service.implementation.servicebus.lifecycle.ServiceBusProcessorClientLifecycleManager; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusErrorHandler; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusRecordMessageListener; -import com.azure.spring.cloud.service.implementation.servicebus.lifecycle.ServiceBusProcessorClientLifecycleManager; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -93,9 +92,9 @@ ServiceBusClientBuilder.ServiceBusProcessorClientBuilder serviceBusProcessorClie return builderFactory.build(); } - @Bean() + @Bean @ConditionalOnMissingBean - public ServiceBusProcessorClient serviceBusProcessorClient( + ServiceBusProcessorClient serviceBusProcessorClient( ServiceBusClientBuilder.ServiceBusProcessorClientBuilder processorClientBuilder) { return processorClientBuilder.buildProcessorClient(); } @@ -142,9 +141,9 @@ ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder serviceBusSessio return builderFactory.build(); } - @Bean() + @Bean @ConditionalOnMissingBean - public ServiceBusProcessorClient serviceBusProcessorClient( + ServiceBusProcessorClient serviceBusProcessorClient( ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder processorClientBuilder) { return processorClientBuilder.buildProcessorClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorCondition.java index c0cf1327bc78..787d463bfdf7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorCondition.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; -public class AzureServiceBusProcessorCondition extends SpringBootCondition { +class AzureServiceBusProcessorCondition extends SpringBootCondition { @Override public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProducerClientConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProducerClientConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.java index 2e3520c10bd6..fa3a2fc3810a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProducerClientConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfiguration.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.ServiceBusSenderAsyncClient; import com.azure.messaging.servicebus.ServiceBusSenderClient; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -60,7 +60,7 @@ ServiceBusClientBuilder.ServiceBusSenderClientBuilder serviceBusSenderClientBuil @Bean @ConditionalOnMissingBean @ConditionalOnBean(ServiceBusClientBuilder.ServiceBusSenderClientBuilder.class) - public ServiceBusSenderAsyncClient serviceBusSenderAsyncClient( + ServiceBusSenderAsyncClient serviceBusSenderAsyncClient( ServiceBusClientBuilder.ServiceBusSenderClientBuilder senderClientBuilder) { return senderClientBuilder.buildAsyncClient(); } @@ -68,7 +68,7 @@ public ServiceBusSenderAsyncClient serviceBusSenderAsyncClient( @Bean @ConditionalOnMissingBean @ConditionalOnBean(ServiceBusClientBuilder.ServiceBusSenderClientBuilder.class) - public ServiceBusSenderClient serviceBusSenderClient( + ServiceBusSenderClient serviceBusSenderClient( ServiceBusClientBuilder.ServiceBusSenderClientBuilder senderClientBuilder) { return senderClientBuilder.buildClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/AzureServiceBusCommonProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/AzureServiceBusCommonProperties.java index eb71045f7ac4..b5968916fa42 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/AzureServiceBusCommonProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/AzureServiceBusCommonProperties.java @@ -10,7 +10,7 @@ /** * */ -abstract class AzureServiceBusCommonProperties extends AbstractAzureAmqpConfigurationProperties { +public abstract class AzureServiceBusCommonProperties extends AbstractAzureAmqpConfigurationProperties { // https://help.boomi.com/bundle/connectors/page/r-atm-Microsoft_Azure_Service_Bus_connection.html // https://docs.microsoft.com/rest/api/servicebus/addressing-and-protocol diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageConfiguration.java similarity index 74% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageConfiguration.java index 06708509b2cd..9e6c0b5f56c6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage; +package com.azure.spring.cloud.autoconfigure.implementation.storage; -import com.azure.spring.cloud.autoconfigure.AzureServiceConfigurationBase; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AzureServiceConfigurationBase; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.common.AzureStorageProperties; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -22,7 +22,7 @@ public class AzureStorageConfiguration extends AzureServiceConfigurationBase { super(azureGlobalProperties); } - @Bean + @Bean(name = "azureStorageProperties") @ConfigurationProperties(AzureStorageProperties.PREFIX) AzureStorageProperties azureStorageProperties() { return loadProperties(getAzureGlobalProperties(), new AzureStorageProperties()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobAutoConfiguration.java similarity index 85% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobAutoConfiguration.java index 7028138fdd47..27e1464e1657 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobAutoConfiguration.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.blob; +package com.azure.spring.cloud.autoconfigure.implementation.storage.blob; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureServicePropertiesUtils; +import com.azure.spring.cloud.autoconfigure.implementation.storage.AzureStorageConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.properties.AzureStorageBlobProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.common.AzureStorageProperties; -import com.azure.spring.cloud.autoconfigure.storage.AzureStorageConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; @@ -33,8 +33,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_FACTORY_BEAN_NAME; /** * {@link EnableAutoConfiguration Auto-configuration} for Azure Storage Blob support. @@ -53,7 +53,7 @@ public class AzureStorageBlobAutoConfiguration { @Bean @ConfigurationProperties(AzureStorageBlobProperties.PREFIX) - AzureStorageBlobProperties azureStorageBlobProperties(AzureStorageProperties azureStorageProperties) { + AzureStorageBlobProperties azureStorageBlobProperties(@Qualifier("azureStorageProperties") AzureStorageProperties azureStorageProperties) { return AzureServicePropertiesUtils.loadServiceCommonProperties(azureStorageProperties, new AzureStorageBlobProperties()); } @@ -73,14 +73,9 @@ BlobContainerAsyncClient blobContainerAsyncClient(AzureStorageBlobProperties pro return blobServiceAsyncClient.getBlobContainerAsyncClient(properties.getContainerName()); } - /** - * Autoconfigure the {@link BlobServiceAsyncClient} instance. - * @param builder the {@link BlobServiceClientBuilder} to build the instance. - * @return the blob service async client. - */ @Bean @ConditionalOnMissingBean - public BlobServiceAsyncClient blobServiceAsyncClient( + BlobServiceAsyncClient blobServiceAsyncClient( @Qualifier(STORAGE_BLOB_CLIENT_BUILDER_BEAN_NAME) BlobServiceClientBuilder builder) { return builder.buildAsyncClient(); } @@ -101,14 +96,9 @@ BlobContainerClient blobContainerClient(AzureStorageBlobProperties properties, return blobServiceClient.getBlobContainerClient(properties.getContainerName()); } - /** - * Autoconfigure the {@link BlobServiceClient} instance. - * @param builder the {@link BlobServiceClientBuilder} to build the instance. - * @return the blob service client. - */ @Bean @ConditionalOnMissingBean - public BlobServiceClient blobServiceClient( + BlobServiceClient blobServiceClient( @Qualifier(STORAGE_BLOB_CLIENT_BUILDER_BEAN_NAME) BlobServiceClientBuilder builder) { return builder.buildClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobResourceAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobResourceAutoConfiguration.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobResourceAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobResourceAutoConfiguration.java index b06e52e3bada..7a3ddb228368 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobResourceAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobResourceAutoConfiguration.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.blob; +package com.azure.spring.cloud.autoconfigure.implementation.storage.blob; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.core.resource.AzureStorageBlobProtocolResolver; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -23,13 +23,9 @@ name = { "account-name", "endpoint", "connection-string" }) public class AzureStorageBlobResourceAutoConfiguration { - /** - * Autoconfigure the {@link AzureStorageBlobProtocolResolver} instance. - * @return the storage blob protocol resolver. - */ @Bean @ConditionalOnMissingBean - public AzureStorageBlobProtocolResolver azureStorageBlobProtocolResolver() { + AzureStorageBlobProtocolResolver azureStorageBlobProtocolResolver() { return new AzureStorageBlobProtocolResolver(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/common/StorageRetryConfigurationProperties.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/common/StorageRetryConfigurationProperties.java index 4c4057f18c06..120e57ce3745 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/common/StorageRetryConfigurationProperties.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/common/StorageRetryConfigurationProperties.java @@ -3,7 +3,7 @@ package com.azure.spring.cloud.autoconfigure.implementation.storage.common; -import com.azure.spring.cloud.autoconfigure.properties.core.retry.RetryConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.RetryConfigurationProperties; import com.azure.spring.cloud.service.implementation.storage.common.StorageRetry; import java.time.Duration; @@ -14,7 +14,7 @@ public class StorageRetryConfigurationProperties extends RetryConfigurationProperties implements StorageRetry { /** - * Secondary Storage account to retry requests against if the primary region becomes unavailable. For instance, 'https://{storage-account-name}-secondary.file.storage.azure.net'. + * Secondary Storage account to retry requests against. if the primary region becomes unavailable. For instance, 'https://{storage-account-name}-secondary.file.storage.azure.net'. */ private String secondaryHost; /** diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareAutoConfiguration.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareAutoConfiguration.java index bdb6c204e199..b3396376a181 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareAutoConfiguration.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.fileshare; +package com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureServicePropertiesUtils; +import com.azure.spring.cloud.autoconfigure.implementation.storage.AzureStorageConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.common.AzureStorageProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.properties.AzureStorageFileShareProperties; -import com.azure.spring.cloud.autoconfigure.storage.AzureStorageConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; @@ -24,6 +24,7 @@ import com.azure.storage.file.share.ShareServiceClient; import com.azure.storage.file.share.ShareServiceClientBuilder; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -51,7 +52,7 @@ public class AzureStorageFileShareAutoConfiguration { @Bean @ConfigurationProperties(AzureStorageFileShareProperties.PREFIX) - AzureStorageFileShareProperties azureStorageFileShareProperties(AzureStorageProperties azureStorageProperties) { + AzureStorageFileShareProperties azureStorageFileShareProperties(@Qualifier("azureStorageProperties") AzureStorageProperties azureStorageProperties) { return AzureServicePropertiesUtils.loadServiceCommonProperties(azureStorageProperties, new AzureStorageFileShareProperties()); } @@ -62,18 +63,13 @@ AzureStorageFileShareProperties azureStorageFileShareProperties(AzureStorageProp */ @Bean @ConditionalOnMissingBean - public ShareServiceClient shareServiceClient(ShareServiceClientBuilder builder) { + ShareServiceClient shareServiceClient(ShareServiceClientBuilder builder) { return builder.buildClient(); } - /** - * Autoconfigure the {@link ShareServiceAsyncClient} instance. - * @param builder the {@link ShareServiceClientBuilder} to build the instance. - * @return the share service async client. - */ @Bean @ConditionalOnMissingBean - public ShareServiceAsyncClient shareServiceAsyncClient(ShareServiceClientBuilder builder) { + ShareServiceAsyncClient shareServiceAsyncClient(ShareServiceClientBuilder builder) { return builder.buildAsyncClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareResourceAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareResourceAutoConfiguration.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareResourceAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareResourceAutoConfiguration.java index 966b34123b3f..d9d0bafa30dd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareResourceAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareResourceAutoConfiguration.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.fileshare; +package com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.core.resource.AzureStorageFileProtocolResolver; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -23,13 +23,9 @@ name = { "account-name", "endpoint", "connection-string" }) public class AzureStorageFileShareResourceAutoConfiguration { - /** - * Autoconfigure the {@link AzureStorageFileProtocolResolver} instance. - * @return the storage file protocol resolver. - */ @Bean @ConditionalOnMissingBean - public AzureStorageFileProtocolResolver azureStorageFileProtocolResolver() { + AzureStorageFileProtocolResolver azureStorageFileProtocolResolver() { return new AzureStorageFileProtocolResolver(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/queue/AzureStorageQueueAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueAutoConfiguration.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/queue/AzureStorageQueueAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueAutoConfiguration.java index 5687d4b28f55..ddffcbc7f123 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/queue/AzureStorageQueueAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueAutoConfiguration.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.queue; +package com.azure.spring.cloud.autoconfigure.implementation.storage.queue; -import com.azure.spring.cloud.autoconfigure.condition.ConditionalOnAnyProperty; +import com.azure.spring.cloud.autoconfigure.implementation.condition.ConditionalOnAnyProperty; import com.azure.spring.cloud.autoconfigure.implementation.properties.utils.AzureServicePropertiesUtils; +import com.azure.spring.cloud.autoconfigure.implementation.storage.AzureStorageConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.common.AzureStorageProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; -import com.azure.spring.cloud.autoconfigure.storage.AzureStorageConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.core.provider.connectionstring.ServiceConnectionStringProvider; @@ -20,6 +20,7 @@ import com.azure.storage.queue.QueueServiceClient; import com.azure.storage.queue.QueueServiceClientBuilder; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -47,29 +48,19 @@ public class AzureStorageQueueAutoConfiguration { @Bean @ConfigurationProperties(AzureStorageQueueProperties.PREFIX) - AzureStorageQueueProperties azureStorageQueueProperties(AzureStorageProperties azureStorageProperties) { + AzureStorageQueueProperties azureStorageQueueProperties(@Qualifier("azureStorageProperties") AzureStorageProperties azureStorageProperties) { return AzureServicePropertiesUtils.loadServiceCommonProperties(azureStorageProperties, new AzureStorageQueueProperties()); } - /** - * Autoconfigure the {@link QueueServiceClient} instance. - * @param builder the {@link QueueServiceClientBuilder} to build the instance. - * @return the queue service client. - */ @Bean @ConditionalOnMissingBean - public QueueServiceClient queueServiceClient(QueueServiceClientBuilder builder) { + QueueServiceClient queueServiceClient(QueueServiceClientBuilder builder) { return builder.buildClient(); } - /** - * Autoconfigure the {@link QueueServiceAsyncClient} instance. - * @param builder the {@link QueueServiceClientBuilder} to build the instance. - * @return the queue service async client. - */ @Bean @ConditionalOnMissingBean - public QueueServiceAsyncClient queueServiceAsyncClient(QueueServiceClientBuilder builder) { + QueueServiceAsyncClient queueServiceAsyncClient(QueueServiceClientBuilder builder) { return builder.buildAsyncClient(); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageQueueMessagingAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueMessagingAutoConfiguration.java similarity index 83% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageQueueMessagingAutoConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueMessagingAutoConfiguration.java index 5e1bd5dfcc03..47bef545ccd5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageQueueMessagingAutoConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueMessagingAutoConfiguration.java @@ -1,16 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage; +package com.azure.spring.cloud.autoconfigure.implementation.storage.queue; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; -import com.azure.spring.cloud.autoconfigure.storage.queue.AzureStorageQueueAutoConfiguration; import com.azure.spring.messaging.implementation.converter.ObjectMapperHolder; import com.azure.spring.messaging.storage.queue.core.StorageQueueTemplate; import com.azure.spring.messaging.storage.queue.core.factory.StorageQueueClientFactory; import com.azure.spring.messaging.storage.queue.core.properties.StorageQueueProperties; import com.azure.spring.messaging.storage.queue.implementation.factory.DefaultStorageQueueClientFactory; -import com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter; +import com.azure.spring.messaging.storage.queue.implementation.support.converter.StorageQueueMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.BeanUtils; import org.springframework.boot.autoconfigure.AutoConfigureAfter; @@ -45,15 +44,9 @@ StorageQueueClientFactory storageQueueClientFactory(AzureStorageQueueProperties return new DefaultStorageQueueClientFactory(storageQueueProperties); } - /** - * Autoconfigure the {@link StorageQueueTemplate} instance. - * @param storageQueueClientFactory the storage queue client factory to create the storage queue clients for the template. - * @param messageConverter the message converter used by the template. - * @return the storage queue template. - */ @Bean @ConditionalOnMissingBean - public StorageQueueTemplate storageQueueTemplate(StorageQueueClientFactory storageQueueClientFactory, + StorageQueueTemplate storageQueueTemplate(StorageQueueClientFactory storageQueueClientFactory, StorageQueueMessageConverter messageConverter) { StorageQueueTemplate storageQueueTemplate = new StorageQueueTemplate(storageQueueClientFactory); storageQueueTemplate.setMessageConverter(messageConverter); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/package-info.java deleted file mode 100644 index 9762ca18e1e8..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jdbc/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Spring Boot Jdbc. - */ -package com.azure.spring.cloud.autoconfigure.jdbc; - diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryCustomizer.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryCustomizer.java index 1cacc11de21a..88515981b37f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryCustomizer.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryCustomizer.java @@ -3,6 +3,8 @@ package com.azure.spring.cloud.autoconfigure.jms; +import com.azure.spring.jms.ServiceBusJmsConnectionFactory; + /** * A customizer for {@link ServiceBusJmsConnectionFactory}. */ diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryFactory.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryFactory.java deleted file mode 100644 index 4253768cc099..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactoryFactory.java +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.jms; - -import com.azure.core.credential.TokenCredential; -import com.azure.identity.extensions.implementation.credential.TokenCredentialProviderOptions; -import com.azure.identity.extensions.implementation.credential.provider.TokenCredentialProvider; -import com.azure.spring.cloud.autoconfigure.jms.implementation.AzureServiceBusJmsConnectionFactoryCustomizer; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; -import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory; -import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactorySettings; -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; - -import java.lang.reflect.InvocationTargetException; -import java.util.Collections; -import java.util.List; - -/** - * A factory for ServiceBusJmsConnectionFactory. - */ -public class ServiceBusJmsConnectionFactoryFactory { - private final AzureServiceBusJmsProperties properties; - private final List factoryCustomizers; - - ServiceBusJmsConnectionFactoryFactory(AzureServiceBusJmsProperties properties, - List factoryCustomizers) { - Assert.notNull(properties, "Properties must not be null"); - this.properties = properties; - this.factoryCustomizers = (factoryCustomizers != null) ? factoryCustomizers : Collections.emptyList(); - } - - T createConnectionFactory(Class factoryClass) { - T factory = createConnectionFactoryInstance(factoryClass); - setClientId(factory); - setPrefetchPolicy(factory); - customize(factory); - return factory; - } - - private void setClientId(T factory) { - if (StringUtils.hasText(this.properties.getTopicClientId())) { - factory.setClientId(this.properties.getTopicClientId()); - } - } - - private void setPrefetchPolicy(T factory) { - AzureServiceBusJmsProperties.PrefetchPolicy prefetchProperties = this.properties.getPrefetchPolicy(); - factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.durableTopicPrefetch", String.valueOf(prefetchProperties.getDurableTopicPrefetch())); - factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.queueBrowserPrefetch", String.valueOf(prefetchProperties.getQueueBrowserPrefetch())); - factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.queuePrefetch", String.valueOf(prefetchProperties.getQueuePrefetch())); - factory.getSettings().getConfigurationOptions().put("jms.prefetchPolicy.topicPrefetch", String.valueOf(prefetchProperties.getTopicPrefetch())); - } - - private T createConnectionFactoryInstance(Class factoryClass) { - try { - T factory; - if (properties.isPasswordlessEnabled()) { - String hostName = properties.getNamespace() + "." + properties.getProfile().getEnvironment().getServiceBusDomainName(); - - TokenCredentialProvider tokenCredentialProvider = TokenCredentialProvider.createDefault(new TokenCredentialProviderOptions(properties.toPasswordlessProperties())); - TokenCredential tokenCredential = tokenCredentialProvider.get(); - - factory = factoryClass.getConstructor(TokenCredential.class, String.class, ServiceBusJmsConnectionFactorySettings.class) - .newInstance(tokenCredential, hostName, new ServiceBusJmsConnectionFactorySettings()); - - } else { - factory = factoryClass.getConstructor(String.class, ServiceBusJmsConnectionFactorySettings.class).newInstance(properties.getConnectionString(), new ServiceBusJmsConnectionFactorySettings()); - } - return factory; - } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { - throw new IllegalStateException("Unable to create JmsConnectionFactory", ex); - } - } - - private void customize(ServiceBusJmsConnectionFactory connectionFactory) { - for (AzureServiceBusJmsConnectionFactoryCustomizer factoryCustomizer : this.factoryCustomizers) { - factoryCustomizer.customize(connectionFactory); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/implementation/AzureServiceBusJmsConnectionFactoryCustomizer.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/implementation/AzureServiceBusJmsConnectionFactoryCustomizer.java deleted file mode 100644 index 0fe3972372ce..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/implementation/AzureServiceBusJmsConnectionFactoryCustomizer.java +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.jms.implementation; - -import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory; - -/** - * A customizer for {@link ServiceBusJmsConnectionFactory}. - */ -@FunctionalInterface -public interface AzureServiceBusJmsConnectionFactoryCustomizer { - - /** - * Customize the given {@link ServiceBusJmsConnectionFactory}. - * @param factory The Service Bus JMS connection factory. - */ - void customize(ServiceBusJmsConnectionFactory factory); -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/package-info.java deleted file mode 100644 index a6b933480c61..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Configuration properties class for Spring JMS. - */ -package com.azure.spring.cloud.autoconfigure.jms.properties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/package-info.java deleted file mode 100644 index 54e44bc6e4e1..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/package-info.java +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Spring Boot Kafka. - */ -package com.azure.spring.cloud.autoconfigure.kafka; - diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/package-info.java deleted file mode 100644 index ba007d1c0225..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Key Vault Certificates. - */ -package com.azure.spring.cloud.autoconfigure.keyvault.certificates; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/package-info.java deleted file mode 100644 index 2dac6090af4f..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Spring Environment Key Vault. - */ -package com.azure.spring.cloud.autoconfigure.keyvault.environment; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/package-info.java deleted file mode 100644 index 880ccd4fd847..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's configuration for Key Vault. - */ -package com.azure.spring.cloud.autoconfigure.keyvault; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/package-info.java deleted file mode 100644 index 54d85d1d0446..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Key Vault Secrets. - */ -package com.azure.spring.cloud.autoconfigure.keyvault.secrets; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/messaging/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/messaging/package-info.java deleted file mode 100644 index cb03a0ee8546..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/messaging/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Spring Message. - */ -package com.azure.spring.cloud.autoconfigure.messaging; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/package-info.java deleted file mode 100644 index 22012eea5219..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration capabilities. - */ -package com.azure.spring.cloud.autoconfigure; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/authentication/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/authentication/package-info.java deleted file mode 100644 index 3184373e8d07..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/authentication/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Authentication configuration properties classes. - */ -package com.azure.spring.cloud.autoconfigure.properties.core.authentication; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/package-info.java deleted file mode 100644 index f50cba0108fe..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/client/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Client related configuration properties classes. - */ -package com.azure.spring.cloud.autoconfigure.properties.core.client; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/profile/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/profile/package-info.java deleted file mode 100644 index 28d466095aa7..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/profile/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Profile configuration properties class. - */ -package com.azure.spring.cloud.autoconfigure.properties.core.profile; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/proxy/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/proxy/package-info.java deleted file mode 100644 index 76da4783def0..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/proxy/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Proxy configuration properties class. - */ -package com.azure.spring.cloud.autoconfigure.properties.core.proxy; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/package-info.java deleted file mode 100644 index 26b59ebae767..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/properties/core/retry/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Retry configuration properties classes. - */ -package com.azure.spring.cloud.autoconfigure.properties.core.retry; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessAutoConfiguration.java deleted file mode 100644 index 20138c1c7985..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessAutoConfiguration.java +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.redis; - -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis.AzureJedisConnectionFactory; -import com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis.AzureRedisCredentialSupplier; -import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; -import com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties; -import org.apache.commons.pool2.impl.GenericObjectPool; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; -import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; -import org.springframework.data.redis.connection.jedis.JedisConnection; -import redis.clients.jedis.Jedis; - -import static com.azure.spring.cloud.autoconfigure.redis.AzureJedisPasswordlessUtil.getJedisClientConfiguration; -import static com.azure.spring.cloud.autoconfigure.redis.AzureJedisPasswordlessUtil.getStandaloneConfig; - -/** - * Azure Redis passwordless connection configuration using Jedis. - * - * @since 4.6.0 - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass({GenericObjectPool.class, JedisConnection.class, Jedis.class}) -@ConditionalOnExpression("${spring.redis.azure.passwordless-enabled:false}") -@AutoConfigureBefore(RedisAutoConfiguration.class) -@ConditionalOnProperty(prefix = "spring.redis", name = {"host"}) -@EnableConfigurationProperties(RedisProperties.class) -public class AzureJedisPasswordlessAutoConfiguration { - - @Bean - @ConfigurationProperties(prefix = "spring.redis.azure") - AzureRedisPasswordlessProperties redisPasswordlessProperties() { - return new AzureRedisPasswordlessProperties(); - } - - @Bean - @ConditionalOnMissingBean - AzureRedisCredentialSupplier azureRedisCredentialSupplier(AzureRedisPasswordlessProperties azureRedisPasswordlessProperties, AzureGlobalProperties azureGlobalProperties) { - return new AzureRedisCredentialSupplier(mergeAzureProperties(azureGlobalProperties, azureRedisPasswordlessProperties).toPasswordlessProperties()); - } - - @Bean - @ConditionalOnMissingBean - AzureJedisConnectionFactory azureRedisConnectionFactory(RedisProperties redisProperties, AzureRedisCredentialSupplier azureRedisCredentialSupplier) { - RedisStandaloneConfiguration standaloneConfig = getStandaloneConfig(redisProperties); - JedisClientConfiguration clientConfiguration = getJedisClientConfiguration(redisProperties); - return new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, azureRedisCredentialSupplier); - } - - private AzureRedisPasswordlessProperties mergeAzureProperties(AzureGlobalProperties azureGlobalProperties, AzureRedisPasswordlessProperties azurePasswordlessProperties) { - AzureRedisPasswordlessProperties mergedProperties = new AzureRedisPasswordlessProperties(); - AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(azureGlobalProperties, azurePasswordlessProperties, mergedProperties); - return mergedProperties; - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessUtil.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessUtil.java deleted file mode 100644 index fc101cc2aa50..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessUtil.java +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.redis; - -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.boot.context.properties.PropertyMapper; -import org.springframework.data.redis.connection.RedisPassword; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; -import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; -import org.springframework.util.ClassUtils; -import org.springframework.util.ReflectionUtils; -import org.springframework.util.StringUtils; -import redis.clients.jedis.JedisPoolConfig; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URI; -import java.net.URISyntaxException; - -final class AzureJedisPasswordlessUtil { - - private static final int AZURE_REDIS_PORT = 6380; - private static final boolean COMMONS_POOL2_AVAILABLE = ClassUtils.isPresent("org.apache.commons.pool2.ObjectPool", - AzureJedisPasswordlessAutoConfiguration.class.getClassLoader()); - - private AzureJedisPasswordlessUtil() { - } - - static JedisClientConfiguration getJedisClientConfiguration(RedisProperties redisProperties) { - - JedisClientConfiguration.JedisClientConfigurationBuilder builder = applyProperties(redisProperties, JedisClientConfiguration.builder()); - - RedisProperties.Pool pool = redisProperties.getJedis().getPool(); - - if (isPoolEnabled(pool)) { - applyPooling(pool, builder); - } - - if (StringUtils.hasText(redisProperties.getUrl())) { - customizeConfigurationFromUrl(redisProperties, builder); - } - return builder.build(); - } - - private static JedisClientConfiguration.JedisClientConfigurationBuilder applyProperties(RedisProperties properties, JedisClientConfiguration.JedisClientConfigurationBuilder builder) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - map.from(properties.isSsl()).whenTrue().toCall(builder::useSsl); - map.from(properties.getTimeout()).to(builder::readTimeout); - map.from(properties.getConnectTimeout()).to(builder::connectTimeout); - map.from(properties.getClientName()).whenHasText().to(builder::clientName); - return builder; - } - - private static void customizeConfigurationFromUrl(RedisProperties redisProperties, JedisClientConfiguration.JedisClientConfigurationBuilder builder) { - ConnectionInfo connectionInfo = parseUrl(redisProperties.getUrl()); - if (connectionInfo.isUseSsl()) { - builder.useSsl(); - } - } - - private static boolean isPoolEnabled(RedisProperties.Pool pool) { - if (pool == null) { - return false; - } - Boolean enabled = true; - Method method = ReflectionUtils.findMethod(RedisProperties.Pool.class, "getEnabled"); - if (method != null) { - try { - enabled = (Boolean) method.invoke(pool); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - } - return (enabled != null) ? enabled : COMMONS_POOL2_AVAILABLE; - } - - private static void applyPooling(RedisProperties.Pool pool, - JedisClientConfiguration.JedisClientConfigurationBuilder builder) { - builder.usePooling().poolConfig(jedisPoolConfig(pool)); - } - - private static JedisPoolConfig jedisPoolConfig(RedisProperties.Pool pool) { - JedisPoolConfig config = new JedisPoolConfig(); - config.setMaxTotal(pool.getMaxActive()); - config.setMaxIdle(pool.getMaxIdle()); - config.setMinIdle(pool.getMinIdle()); - - if (pool.getTimeBetweenEvictionRuns() != null) { - Method method = ReflectionUtils.findMethod(RedisProperties.Pool.class, "setTimeBetweenEvictionRuns"); - if (method != null) { - try { - method.invoke(pool, pool.getTimeBetweenEvictionRuns()); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - } else { - config.setTimeBetweenEvictionRunsMillis(pool.getTimeBetweenEvictionRuns().toMillis()); - } - } - - if (pool.getMaxWait() != null) { - Method method = ReflectionUtils.findMethod(RedisProperties.Pool.class, "setMaxWait"); - if (method != null) { - try { - method.invoke(pool, pool.getMaxWait()); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - } else { - config.setMaxWaitMillis(pool.getMaxWait().toMillis()); - } - } - return config; - } - - static RedisStandaloneConfiguration getStandaloneConfig(RedisProperties redisProperties) { - RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); - if (StringUtils.hasText(redisProperties.getUrl())) { - ConnectionInfo connectionInfo = parseUrl(redisProperties.getUrl()); - config.setHostName(connectionInfo.getHostName()); - config.setPort(connectionInfo.getPort()); - config.setUsername(connectionInfo.getUsername()); - config.setPassword(RedisPassword.of(connectionInfo.getPassword())); - } else { - config.setHostName(redisProperties.getHost()); - config.setPort(redisProperties.getPort()); - config.setUsername(redisProperties.getUsername()); - config.setPassword(RedisPassword.of(redisProperties.getPassword())); - } - config.setDatabase(redisProperties.getDatabase()); - if (config.getPort() == 0) { - config.setPort(AZURE_REDIS_PORT); - } - return config; - } - - static ConnectionInfo parseUrl(String url) { - try { - URI uri = new URI(url); - String scheme = uri.getScheme(); - if (!"redis".equals(scheme) && !"rediss".equals(scheme)) { - throw new RedisUrlSyntaxException(url); - } - boolean useSsl = ("rediss".equals(scheme)); - String username = null; - String password = null; - if (uri.getUserInfo() != null) { - String candidate = uri.getUserInfo(); - int index = candidate.indexOf(':'); - if (index >= 0) { - username = candidate.substring(0, index); - password = candidate.substring(index + 1); - } else { - password = candidate; - } - } - return new ConnectionInfo(uri, useSsl, username, password); - } catch (URISyntaxException ex) { - throw new RedisUrlSyntaxException(url, ex); - } - } - - static class ConnectionInfo { - - private final URI uri; - - private final boolean useSsl; - - private final String username; - - private final String password; - - ConnectionInfo(URI uri, boolean useSsl, String username, String password) { - this.uri = uri; - this.useSsl = useSsl; - this.username = username; - this.password = password; - } - - boolean isUseSsl() { - return this.useSsl; - } - - String getHostName() { - return this.uri.getHost(); - } - - int getPort() { - return this.uri.getPort(); - } - - String getUsername() { - return this.username; - } - - String getPassword() { - return this.password; - } - - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/RedisUrlSyntaxException.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/RedisUrlSyntaxException.java deleted file mode 100644 index 10e294db143b..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/RedisUrlSyntaxException.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.redis; - -class RedisUrlSyntaxException extends RuntimeException { - - private final String url; - - RedisUrlSyntaxException(String url, Exception cause) { - super(buildMessage(url), cause); - this.url = url; - } - - RedisUrlSyntaxException(String url) { - super(buildMessage(url)); - this.url = url; - } - - String getUrl() { - return this.url; - } - - private static String buildMessage(String url) { - return "Invalid Redis URL '" + url + "'"; - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/package-info.java deleted file mode 100644 index 9afb6d2ec182..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/redis/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Redis. - */ -package com.azure.spring.cloud.autoconfigure.redis; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceResourceManagerConfigurationBase.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceResourceManagerConfigurationBase.java deleted file mode 100644 index 7042d848165e..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceResourceManagerConfigurationBase.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.resourcemanager; - -import com.azure.resourcemanager.AzureResourceManager; -import org.springframework.context.annotation.Configuration; - -/** - * A configuration base class for all Azure SDK resource managers. - */ -@Configuration(proxyBeanMethods = false) -public abstract class AzureServiceResourceManagerConfigurationBase { - - /** - * The entry point for accessing resource management APIs in Azure. - */ - protected AzureResourceManager azureResourceManager; - - /** - * Create {@link AzureServiceResourceManagerConfigurationBase} instance - * @param azureResourceManager the azure resource manager - */ - public AzureServiceResourceManagerConfigurationBase(AzureResourceManager azureResourceManager) { - this.azureResourceManager = azureResourceManager; - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/package-info.java deleted file mode 100644 index 40e9155edd00..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/resourcemanager/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Resource Manager. - */ -package com.azure.spring.cloud.autoconfigure.resourcemanager; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/package-info.java deleted file mode 100644 index d2be959bb79f..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/servicebus/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Service Bus. - */ -package com.azure.spring.cloud.autoconfigure.servicebus; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/package-info.java deleted file mode 100644 index 0269e8926059..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/blob/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Storage Blob. - */ -package com.azure.spring.cloud.autoconfigure.storage.blob; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/package-info.java deleted file mode 100644 index 13866f8f4302..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Storage File Share. - */ -package com.azure.spring.cloud.autoconfigure.storage.fileshare; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/package-info.java deleted file mode 100644 index 8c7f99ecb96a..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Storage. - */ -package com.azure.spring.cloud.autoconfigure.storage; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/queue/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/queue/package-info.java deleted file mode 100644 index bba2f6d88732..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/storage/queue/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure's auto-configuration for Storage Queue. - */ -package com.azure.spring.cloud.autoconfigure.storage.queue; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/trace/sleuth/AzureSleuthAutoConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/trace/sleuth/AzureSleuthAutoConfiguration.java deleted file mode 100644 index b584c3305914..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/trace/sleuth/AzureSleuthAutoConfiguration.java +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.trace.sleuth; - -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.spring.cloud.core.implementation.trace.AzureHttpClientBuilderFactoryBeanPostProcessor; -import com.azure.spring.cloud.trace.sleuth.SleuthHttpPolicy; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.cloud.sleuth.Tracer; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Role; - -/** - * {@link EnableAutoConfiguration Auto-configuration} for Spring Cloud Azure Sleuth support. - * - * @since 4.0.0 - */ -@Role(BeanDefinition.ROLE_INFRASTRUCTURE) -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass({ SleuthHttpPolicy.class, Tracer.class }) -@ConditionalOnProperty(value = "spring.sleuth.enabled", matchIfMissing = true) -public class AzureSleuthAutoConfiguration { - - /** - * Default sleuth HTTP policy bean name. - */ - public static final String DEFAULT_SLEUTH_HTTP_POLICY_BEAN_NAME = "AzureSleuthHttpPolicy"; - - /** - * Autoconfigure the {@link HttpPipelinePolicy} for sleuth usage. - * @param tracer the sleuth {@link Tracer}. - * @return the http pipeline policy - */ - @Bean(name = DEFAULT_SLEUTH_HTTP_POLICY_BEAN_NAME) - @ConditionalOnMissingBean(name = DEFAULT_SLEUTH_HTTP_POLICY_BEAN_NAME) - public HttpPipelinePolicy azureSleuthHttpPolicy(Tracer tracer) { - return new SleuthHttpPolicy(tracer); - } - - @Role(BeanDefinition.ROLE_INFRASTRUCTURE) - @Bean - @ConditionalOnMissingBean - AzureHttpClientBuilderFactoryBeanPostProcessor httpClientBuilderFactoryBeanPostProcessor() { - return new AzureHttpClientBuilderFactoryBeanPostProcessor(DEFAULT_SLEUTH_HTTP_POLICY_BEAN_NAME); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/trace/sleuth/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/trace/sleuth/package-info.java deleted file mode 100644 index 30694e3a2f3b..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/trace/sleuth/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Auto-configuration for Spring Cloud Azure integration with Spring Cloud Sleuth. - */ -package com.azure.spring.cloud.autoconfigure.trace.sleuth; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactory.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/jms/ServiceBusJmsConnectionFactory.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactory.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/jms/ServiceBusJmsConnectionFactory.java index 12dc8c825519..c9522834de0c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsConnectionFactory.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/jms/ServiceBusJmsConnectionFactory.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.jms; import org.apache.qpid.jms.JmsConnectionFactory; diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/package-info.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/jms/package-info.java similarity index 56% rename from sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/package-info.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/jms/package-info.java index 740c1ccb184e..30260f8b7c4e 100644 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/package-info.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/jms/package-info.java @@ -2,6 +2,6 @@ // Licensed under the MIT License. /** - * Support for Spring Cloud Sleuth. + * Spring Cloud Azure's Service Bus JMS extension. */ -package com.azure.spring.cloud.trace.sleuth; +package com.azure.spring.jms; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 0e48ed96d134..3ba5cb5772a8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1,1009 +1,5 @@ { "properties": [ - { - "name": "azure.activedirectory.active-directory-groups", - "type": "java.util.List", - "description": "Expected UserGroups that an authority will be granted to if found in the response from the MemeberOf Graph API Call.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.user-group.allowed-group-names" - } - }, - { - "name": "azure.activedirectory.allow-telemetry", - "type": "java.lang.Boolean", - "description": "If Telemetry events should be published to Microsoft Entra ID.", - "defaultValue": true, - "deprecation": { - "level": "error", - "reason": "Deprecate the telemetry endpoint and use HTTP header User Agent instead." - } - }, - { - "name": "azure.activedirectory.app-id-uri", - "type": "java.lang.String", - "description": "App ID URI which might be used in the 'aud' claim of an id_token.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.app-id-uri" - } - }, - { - "name": "azure.activedirectory.application-type", - "type": "java.lang.String", - "description": "Type of the Microsoft Entra application.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.application-type" - } - }, - { - "name": "azure.activedirectory.authenticate-additional-parameters", - "type": "java.util.Map", - "description": "Add additional parameters to the Authorization URL. For instance, 'prompt: login'.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.authenticate-additional-parameters" - } - }, - { - "name": "azure.activedirectory.authorization-clients", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.authorization-clients" - } - }, - { - "name": "azure.activedirectory.b2c.allow-telemetry", - "type": "java.lang.Boolean", - "description": "Telemetry data will be collected if true, or disable data collection.", - "defaultValue": true, - "deprecation": { - "level": "error", - "reason": "Deprecate the telemetry endpoint and use HTTP header User Agent instead." - } - }, - { - "name": "azure.activedirectory.b2c.app-id-uri", - "type": "java.lang.String", - "description": "App ID URI which might be used in the 'aud' claim of an token.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.app-id-uri" - } - }, - { - "name": "azure.activedirectory.b2c.authenticate-additional-parameters", - "type": "java.util.Map", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters" - } - }, - { - "name": "azure.activedirectory.b2c.authorization-clients", - "description": "Specify client configuration. For instance, 'authorizationGrantType: client_credentials'.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.authorization-clients" - } - }, - { - "name": "azure.activedirectory.b2c.base-uri", - "type": "java.lang.String", - "description": "AAD B2C endpoint base uri.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.base-uri" - } - }, - { - "name": "azure.activedirectory.b2c.client-id", - "type": "java.lang.String", - "description": "The application ID that registered under b2c tenant.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.credential.client-id" - } - }, - { - "name": "azure.activedirectory.b2c.client-secret", - "type": "java.lang.String", - "description": "The application secret that registered under b2c tenant.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.credential.client-secret" - } - }, - { - "name": "azure.activedirectory.b2c.jwt-connect-timeout", - "type": "java.lang.Integer", - "description": "Connection Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "azure.activedirectory.b2c.jwt-read-timeout", - "type": "java.lang.Integer", - "description": "Read Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "azure.activedirectory.b2c.jwt-size-limit", - "type": "java.lang.Integer", - "description": "Size limit in Bytes of the JWKSet Remote URL call. The default value is `50*1024`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "spring.cloud.azure.active-directory.b2c.jwt-connect-timeout", - "type": "java.lang.Integer", - "description": "Connection Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "spring.cloud.azure.active-directory.b2c.jwt-read-timeout", - "type": "java.lang.Integer", - "description": "Read Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "spring.cloud.azure.active-directory.b2c.jwt-size-limit", - "type": "java.lang.Integer", - "description": "Size limit in Bytes of the JWKSet Remote URL call. The default value is `50*1024`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "azure.activedirectory.b2c.login-flow", - "type": "java.lang.String", - "description": "Specify the primary sign in flow key.", - "defaultValue": "sign-up-or-sign-in", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.login-flow" - } - }, - { - "name": "azure.activedirectory.b2c.logout-success-url", - "type": "java.lang.String", - "defaultValue": "http:\/\/localhost:8080\/login", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.logout-success-url" - } - }, - { - "name": "azure.activedirectory.b2c.reply-url", - "type": "java.lang.String", - "defaultValue": "{baseUrl}\/login\/oauth2\/code\/", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.reply-url" - } - }, - { - "name": "azure.activedirectory.b2c.tenant", - "type": "java.lang.String", - "description": "The name of the b2c tenant.", - "deprecation": { - "level": "error", - "reason": "Configuration updated to baseUri.", - "replacement": "spring.cloud.azure.active-directory.b2c.base-uri" - } - }, - { - "name": "azure.activedirectory.b2c.tenant-id", - "type": "java.lang.String", - "description": "The name of the b2c tenant ID.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.profile.tenant-id" - } - }, - { - "name": "azure.activedirectory.b2c.user-flows", - "type": "java.util.Map", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.user-flows" - } - }, - { - "name": "azure.activedirectory.b2c.user-name-attribute-name", - "type": "java.lang.String", - "description": "User name attribute name.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.b2c.user-name-attribute-name" - } - }, - { - "name": "azure.activedirectory.base-uri", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint" - } - }, - { - "name": "azure.activedirectory.client-id", - "type": "java.lang.String", - "description": "Registered application ID in Microsoft Entra ID. Must be configured when OAuth2 authentication is done in front end.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.credential.client-id" - } - }, - { - "name": "azure.activedirectory.client-secret", - "type": "java.lang.String", - "description": "API Access Key of the registered application. Must be configured when OAuth2 authentication is done in front end.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.credential.client-secret" - } - }, - { - "name": "azure.activedirectory.graph-base-uri", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint" - } - }, - { - "name": "azure.activedirectory.graph-membership-uri", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint" - } - }, - { - "name": "azure.activedirectory.jwk-set-cache-lifespan", - "type": "java.lang.Long", - "description": "The lifespan(duration) of the cached JWK set before it expires.", - "defaultValue": 5, - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.jwk-set-cache-lifespan" - } - }, - { - "name": "azure.activedirectory.jwk-set-cache-refresh-time", - "type": "java.lang.Long", - "description": "The refresh time(duration) of the cached JWK set before it expires.", - "defaultValue": 5, - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.jwk-set-cache-refresh-time" - } - }, - { - "name": "azure.activedirectory.jwt-connect-timeout", - "type": "java.lang.Integer", - "description": "Connection Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "azure.activedirectory.jwt-read-timeout", - "type": "java.lang.Integer", - "description": "Read Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "azure.activedirectory.jwt-size-limit", - "type": "java.lang.Integer", - "description": "Size limit in Bytes of the JWKSet Remote URL call. The default value is `51200`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "spring.cloud.azure.active-directory.jwt-connect-timeout", - "type": "java.lang.Integer", - "description": "Connection Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "spring.cloud.azure.active-directory.jwt-read-timeout", - "type": "java.lang.Integer", - "description": "Read Timeout(duration) for the JWKSet Remote URL call. The default value is `500s`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "spring.cloud.azure.active-directory.jwt-size-limit", - "type": "java.lang.Integer", - "description": "Size limit in Bytes of the JWKSet Remote URL call. The default value is `51200`.", - "deprecation": { - "level": "error", - "reason": "Not used anymore, for any customization, provide a custom RestOperation bean." - } - }, - { - "name": "azure.activedirectory.post-logout-redirect-uri", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.post-logout-redirect-uri" - } - }, - { - "name": "azure.activedirectory.redirect-uri-template", - "type": "java.lang.String", - "description": "Redirection Endpoint: Used by the authorization server to return responses containing authorization credentials to the client via the resource owner user-agent.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.redirect-uri-template" - } - }, - { - "name": "azure.activedirectory.resource-server.claim-to-authority-prefix-map", - "type": "java.util.Map", - "description": "Configure which claim will be used to build GrantedAuthority, and prefix of the GrantedAuthority's string value. Example: If use the default value, and the access_token's \"scp\" scope value is \"testValue\", then GrantedAuthority with \"SCOPE_testValue\" will be created. The default value is `\"scp\" -> \"SCOPE_\", \"roles\" -> \"APPROLE_\"`.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map" - } - }, - { - "name": "azure.activedirectory.resource-server.principal-claim-name", - "type": "java.lang.String", - "description": "Configure which claim in access token be returned in AuthenticatedPrincipal#getName. Example: If use the default value, and the access_token's \"sub\" scope value is \"testValue\", then AuthenticatedPrincipal#getName will return \"testValue\". The default value is `\"sub\"`.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.resource-server.principal-claim-name" - } - }, - { - "name": "azure.activedirectory.session-stateless", - "type": "java.lang.Boolean", - "description": "If true activates the stateless auth filter AADAppRoleStatelessAuthenticationFilter. The default is false which activates AADAuthenticationFilter.", - "defaultValue": false, - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.session-stateless" - } - }, - { - "name": "azure.activedirectory.tenant-id", - "type": "java.lang.String", - "description": "Azure Tenant ID.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.profile.tenant-id" - } - }, - { - "name": "azure.activedirectory.user-group.allowed-group-ids", - "type": "java.util.Set", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.user-group.allowed-group-ids" - } - }, - { - "name": "azure.activedirectory.user-group.allowed-group-names", - "type": "java.util.List", - "description": "Expected UserGroups that an authority will be granted to if found in the response from the MemeberOf Graph API Call.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.user-group.allowed-group-names" - } - }, - { - "name": "azure.activedirectory.user-group.allowed-groups", - "type": "java.util.List", - "deprecation": { - "level": "error", - "reason": "In order to distinguish between allowed-group-ids and allowed-group-names, set allowed-groups deprecated.", - "replacement": "spring.cloud.azure.active-directory.user-group.allowed-group-names" - } - }, - { - "name": "azure.activedirectory.user-group.enable-full-list", - "type": "java.lang.Boolean", - "description": "The enableFullList is used to control whether to list all group id, default is false.", - "defaultValue": false, - "deprecation": { - "level": "error", - "reason": "enable-full-list is not easy to understand." - } - }, - { - "name": "azure.activedirectory.user-name-attribute", - "type": "java.lang.String", - "description": "Decide which claim to be principal's name.", - "deprecation": { - "level": "error", - "reason": "Use uniform property format(spring.cloud.azure.*) in all Spring Cloud Azure libraries.", - "replacement": "spring.cloud.azure.active-directory.user-name-attribute" - } - }, - { - "name": "azure.cosmos.allow-telemetry", - "type": "java.lang.Boolean", - "description": "Whether allow Microsoft to collect telemetry data.", - "defaultValue": true, - "deprecation": { - "level": "error", - "reason": "Deprecate the telemetry endpoint and use HTTP header User Agent instead." - } - }, - { - "name": "azure.cosmos.connection-mode", - "type": "com.azure.cosmos.ConnectionMode", - "description": "Represents the connection mode to be used by the client in the Azure Cosmos DB database service.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Cosmos DB related under 'spring.cloud.azure.cosmos' prefix.", - "replacement": "spring.cloud.azure.cosmos.connection-mode" - } - }, - { - "name": "azure.cosmos.consistency-level", - "type": "com.azure.cosmos.ConsistencyLevel", - "description": "Cosmos DB consistency level.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Cosmos DB related under 'spring.cloud.azure.cosmos' prefix.", - "replacement": "spring.cloud.azure.cosmos.consistency-level" - } - }, - { - "name": "azure.cosmos.database", - "type": "java.lang.String", - "description": "Cosmos DB database name.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Cosmos DB related under 'spring.cloud.azure.cosmos' prefix.", - "replacement": "spring.cloud.azure.cosmos.database" - } - }, - { - "name": "azure.cosmos.key", - "type": "java.lang.String", - "description": "Document DB key.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Cosmos DB related under 'spring.cloud.azure.cosmos' prefix.", - "replacement": "spring.cloud.azure.cosmos.key" - } - }, - { - "name": "azure.cosmos.populate-query-metrics", - "type": "java.lang.Boolean", - "description": "Populate Diagnostics Strings and Query metrics.", - "defaultValue": false, - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Cosmos DB related under 'spring.cloud.azure.cosmos' prefix.", - "replacement": "spring.cloud.azure.cosmos.populate-query-metrics" - } - }, - { - "name": "azure.cosmos.response-diagnostics-processor", - "type": "com.azure.spring.data.cosmos.core.ResponseDiagnosticsProcessor", - "description": "Response Diagnostics processor Default implementation is to log the response diagnostics string.", - "deprecation": { - "level": "error", - "reason": "Deprecate for it's not a property." - } - }, - { - "name": "azure.cosmos.uri", - "type": "java.lang.String", - "description": "Document DB URI.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Cosmos DB related under 'spring.cloud.azure.cosmos' prefix.", - "replacement": "spring.cloud.azure.cosmos.endpoint" - } - }, - { - "name": "azure.cosmos.validate-uri", - "type": "java.lang.Boolean", - "description": "Whether to validate the uri, default is true.", - "defaultValue": true, - "deprecation": { - "level": "error", - "reason": "Remove validation on the uri." - } - }, - { - "name": "azure.keyvault.allow-telemetry", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Deprecate the telemetry endpoint and use HTTP header User Agent instead." - } - }, - { - "name": "azure.keyvault.case-sensitive-keys", - "type": "java.lang.String", - "description": "Defines the constant for the property that enables\/disables case sensitive keys.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Property Source related under 'spring.cloud.azure.cosmos' prefix. Use spring.cloud.azure.keyvault.secret.property-sources' instead." - } - }, - { - "name": "azure.keyvault.certificate-password", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret credential related under 'spring.cloud.azure.keyvault.secret.credential' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.credential.client-certificate-password" - } - }, - { - "name": "azure.keyvault.certificate-path", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret credential related under 'spring.cloud.azure.keyvault.secret.credential' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.credential.client-certificate-path" - } - }, - { - "name": "azure.keyvault.client-id", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret credential related under 'spring.cloud.azure.keyvault.secret.credential' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.credential.client-id" - } - }, - { - "name": "azure.keyvault.client-key", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret credential related under 'spring.cloud.azure.keyvault.secret.credential' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.credential.client-secret" - } - }, - { - "name": "azure.keyvault.enabled", - "type": "java.lang.Boolean", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret related under 'spring.cloud.azure.keyvault.secret' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.enabled" - } - }, - { - "name": "azure.keyvault.order", - "type": "java.lang.String", - "description": "The constant used to define the order of the key vaults you are delivering (comma delimited, e.g 'my-vault, my-vault-2').", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Property Source related under 'spring.cloud.azure.keyvault.secret' prefix. Use spring.cloud.azure.keyvault.secret.property-sources' instead." - } - }, - { - "name": "azure.keyvault.refresh-interval", - "type": "java.lang.Long", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Property Source related under 'spring.cloud.azure.keyvault.secret' prefix. Use spring.cloud.azure.keyvault.secret.property-sources' instead." - } - }, - { - "name": "azure.keyvault.secret-keys", - "type": "java.util.List", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Property Source related under 'spring.cloud.azure.keyvault.secret' prefix. Use spring.cloud.azure.keyvault.secret.property-sources' instead." - } - }, - { - "name": "azure.keyvault.tenant-id", - "type": "java.lang.String", - "description": "Tenant ID for the key vault.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret Azure environment related under 'spring.cloud.azure.keyvault.secret.profile' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.profile.tenant-id" - } - }, - { - "name": "azure.keyvault.uri", - "type": "java.lang.String", - "description": "Azure Key Vault endpoint. For instance, 'https://{your-unique-keyvault-name}.vault.azure.net/'.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Key Vault Secret related under 'spring.cloud.azure.keyvault.secret' prefix.", - "replacement": "spring.cloud.azure.keyvault.secret.endpoint" - } - }, - { - "name": "azure.storage.account-key", - "type": "java.lang.String", - "description": "Storage account access key.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Storage Blob related under 'spring.cloud.azure.storage.blob' prefix.", - "replacement": "spring.cloud.azure.storage.blob.account-key" - } - }, - { - "name": "azure.storage.account-name", - "type": "java.lang.String", - "description": "Name for the storage account.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Storage Blob related under 'spring.cloud.azure.storage.blob' prefix.", - "replacement": "spring.cloud.azure.storage.blob.account-name" - } - }, - { - "name": "azure.storage.blob-endpoint", - "type": "java.lang.String", - "description": "Endpoint for the storage blob.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Storage Blob related under 'spring.cloud.azure.storage.blob' prefix.", - "replacement": "spring.cloud.azure.storage.blob.endpoint" - } - }, - { - "name": "azure.storage.file-endpoint", - "type": "java.lang.String", - "description": "Endpoint for the storage file share.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Storage File Share related under 'spring.cloud.azure.storage.fileshare' prefix.", - "replacement": "spring.cloud.azure.storage.fileshare.endpoint" - } - }, - { - "name": "spring.cloud.azure.auto-create-resources", - "type": "java.lang.Boolean", - "defaultValue": false, - "description": "Whether to create Azure resources automatically. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate the ability to auto create resources." - } - }, - { - "name": "spring.cloud.azure.client-id", - "type": "java.lang.String", - "description": "Client ID to use when performing service principal authentication with Azure. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all credential under 'spring.cloud.azure.credential' prefix.", - "replacement": "spring.cloud.azure.credential.client-id" - } - }, - { - "name": "spring.cloud.azure.client-secret", - "type": "java.lang.String", - "description": "Client secret to use when performing service principal authentication with Azure. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all credential under 'spring.cloud.azure.credential' prefix.", - "replacement": "spring.cloud.azure.credential.client-secret" - } - }, - { - "name": "spring.cloud.azure.environment", - "type": "java.lang.String", - "description": "The Azure environment, such as global Azure or Azure China. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Azure environment related under 'spring.cloud.azure.profile' prefix.", - "replacement": "spring.cloud.azure.profile.cloud-type" - } - }, - { - "name": "spring.cloud.azure.eventhub.checkpoint-access-key", - "type": "java.lang.String", - "description": "Storage account access key. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "To keep in accordance with Azure Event Hubs service name and use the new prefix of 'spring.cloud.azure.eventhubs.processor'.", - "replacement": "spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key" - } - }, - { - "name": "spring.cloud.azure.eventhub.checkpoint-container", - "type": "java.lang.String", - "description": "Name of the container. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "To keep in accordance with Azure Event Hubs service name and use the new prefix of 'spring.cloud.azure.eventhubs.processor'.", - "replacement": "spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name" - } - }, - { - "name": "spring.cloud.azure.eventhub.checkpoint-storage-account", - "type": "java.lang.String", - "description": "Name for the storage account. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "To keep in accordance with Azure Event Hubs service name and use the new prefix of 'spring.cloud.azure.eventhubs.processor'.", - "replacement": "spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name" - } - }, - { - "name": "spring.cloud.azure.eventhub.connection-string", - "type": "java.lang.String", - "description": "Connection string to connect to an event hub. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "To keep in accordance with Azure Event Hubs service name.", - "replacement": "spring.cloud.azure.eventhubs.connection-string" - } - }, - { - "name": "spring.cloud.azure.eventhub.namespace", - "type": "java.lang.String", - "description": "The namespace of an event hub. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "To keep in accordance with Azure Event Hubs service name.", - "replacement": "spring.cloud.azure.eventhubs.namespace" - } - }, - { - "name": "spring.cloud.azure.msi-enabled", - "type": "java.lang.Boolean", - "defaultValue": false, - "description": "Whether managed identity is enabled. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all credential under 'spring.cloud.azure.credential' prefix.", - "replacement": "spring.cloud.azure.credential.managed-identity-enabled" - } - }, - { - "name": "spring.cloud.azure.region", - "type": "java.lang.String", - "description": "The region of an Azure resource. For instance, '\"eastus\"'. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all resource related under 'spring.cloud.azure..resource' prefix." - } - }, - { - "name": "spring.cloud.azure.resource-group", - "type": "java.lang.String", - "description": "The resource group holds an Azure resource. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all resource related under 'spring.cloud.azure..resource' prefix." - } - }, - { - "name": "spring.cloud.azure.servicebus.retry-options.max-retries", - "type": "java.lang.Integer", - "description": "The maximum number of attempts. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to keep consistent with the unified configuration options.", - "replacement": "spring.cloud.azure.servicebus.retry.exponential.max-retries" - } - }, - { - "name": "spring.cloud.azure.servicebus.retry-options.delay", - "type": "java.time.Duration", - "description": "Amount of time(Duration) to wait between retry attempts. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to keep consistent with the unified configuration options.", - "replacement": "spring.cloud.azure.servicebus.retry.exponential.base-delay" - } - }, - { - "name": "spring.cloud.azure.servicebus.retry-options.max-delay", - "type": "java.time.Duration", - "description": "Maximum permissible amount of time(duration) between retry attempts. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to keep consistent with the unified configuration options.", - "replacement": "spring.cloud.azure.servicebus.retry.exponential.max-delay" - } - }, - { - "name": "spring.cloud.azure.servicebus.retry-options.try-timeout", - "type": "java.time.Duration", - "description": "Amount of time(Duration) to wait until a timeout. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to keep consistent with the unified configuration options.", - "replacement": "spring.cloud.azure.servicebus.retry.try-timeout" - } - }, - { - "name": "spring.cloud.azure.servicebus.retry-options.retry-mode", - "type": "com.azure.core.amqp.AmqpRetryMode", - "description": "The type of approach to apply when calculating the delay between retry attempts. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to keep consistent with the unified configuration options.", - "replacement": "spring.cloud.azure.servicebus.retry.mode" - } - }, - { - "name": "spring.cloud.azure.servicebus.transport-type", - "type": "com.azure.core.amqp.AmqpTransportType", - "description": "Transport type for AMQP-based client. Supported types are: AMQP, AMQP_WEB_SOCKETS. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to keep consistent with the unified configuration options.", - "replacement": "spring.cloud.azure.servicebus.client.transport-type" - } - }, - { - "name": "spring.cloud.azure.storage.access-key", - "type": "java.lang.String", - "description": "Storage account access key. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Storage Blob related under 'spring.cloud.azure.storage.blob' prefix.", - "replacement": "spring.cloud.azure.storage.blob.account-key" - } - }, - { - "name": "spring.cloud.azure.storage.account", - "type": "java.lang.String", - "description": "Name for the storage account. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Storage Blob related under 'spring.cloud.azure.storage.blob' prefix.", - "replacement": "spring.cloud.azure.storage.blob.account-name" - } - }, - { - "name": "spring.cloud.azure.storage.resource-group", - "type": "java.lang.String", - "description": "Resource group the storage account belongs to. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all resource related under 'spring.cloud.azure..resource' prefix.", - "replacement": "spring.cloud.azure.storage.blob.resource.resource-group" - } - }, - { - "name": "spring.cloud.azure.subscription-id", - "type": "java.lang.String", - "description": "Subscription ID to use when connecting to Azure resources. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Azure environment related under 'spring.cloud.azure.profile' prefix.", - "replacement": "spring.cloud.azure.profile.subscription-id" - } - }, - { - "name": "spring.cloud.azure.tenant-id", - "type": "java.lang.String", - "description": "Tenant ID for Azure resources. This is a legacy property.", - "deprecation": { - "level": "error", - "reason": "Deprecate to move all Azure environment related under 'spring.cloud.azure.profile' prefix.", - "replacement": "spring.cloud.azure.profile.tenant-id" - } - }, - { - "name": "spring.cloud.stream.eventhub.bindings", - "deprecation": { - "level": "error", - "reason": "To keep in accordance with Azure Event Hubs service name, legacy is deprecated.", - "replacement": "spring.cloud.stream.eventhubs.bindings" - } - }, - { - "name": "spring.cloud.stream.eventhub.checkpoint-storage-account", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "Deprecate to use the unified style with the prefix of 'spring.cloud.azure.eventhubs.processor'.", - "replacement": "spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name" - } - }, - { - "name": "spring.cloud.stream.servicebus.queue.bindings", - "deprecation": { - "level": "error", - "reason": "The 'servicebus-queue' binder is dropped and 'servicebus' binder is provided instead with the ability of interacting with both queue and topic.", - "replacement": "spring.cloud.stream.servicebus.bindings" - } - }, - { - "name": "spring.cloud.stream.servicebus.topic.bindings", - "deprecation": { - "level": "error", - "reason": "The 'servicebus-queue' binder is dropped and 'servicebus' binder is provided instead with the ability of interacting with both queue and topic.", - "replacement": "spring.cloud.stream.servicebus.bindings" - } - }, - { - "name": "spring.jms.servicebus.password", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "The password can be parsed from the connection string, use 'spring.jms.servicebus.connection-string' instead." - } - }, - { - "name": "spring.jms.servicebus.username", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "The username can be parsed from the connection string, use 'spring.jms.servicebus.connection-string' instead." - } - }, - { - "name": "spring.jms.servicebus.remote-url", - "type": "java.lang.String", - "deprecation": { - "level": "error", - "reason": "The remote URL can be constructed from the connection string, use 'spring.jms.servicebus.connection-string' instead." - } - }, { "name": "spring.cloud.azure.active-directory.enabled", "type": "java.lang.Boolean", @@ -1162,7 +158,7 @@ "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.application-id", "type": "java.lang.String", "description": "Represents current application and is used for telemetry\/monitoring purposes.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.client.ClientConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.ClientConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.connect-timeout", @@ -1192,25 +188,25 @@ "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.allowed-header-names", "type": "java.util.Set", "description": "Comma-delimited list of allowlist headers that should be logged. The default value is `'x-ms-request-id','x-ms-client-request-id','x-ms-return-client-request-id','traceparent','MS-CV','Accept','Cache-Control','Connection','Content-Length','Content-Type','Date','ETag','Expires','If-Match','If-Modified-Since','If-None-Match','If-Unmodified-Since','Last-Modified','Pragma','Request-Id','Retry-After','Server','Transfer-Encoding','User-Agent','WWW-Authenticate'`.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.client.HttpLoggingConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.HttpLoggingConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.allowed-query-param-names", "type": "java.util.Set", "description": "Comma-delimited list of allowlist query parameters. The default value is `'api-version'`.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.client.HttpLoggingConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.HttpLoggingConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.level", "type": "com.azure.core.http.policy.HttpLogDetailLevel", "description": "The level of detail to log on HTTP messages. Supported types are: NONE, BASIC, HEADERS, BODY, BODY_AND_HEADERS. The default value is `NONE`.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.client.HttpLoggingConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.HttpLoggingConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.logging.pretty-print-body", "type": "java.lang.Boolean", "description": "Whether to pretty print the message bodies. The default value is `false`.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.client.HttpLoggingConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.client.HttpLoggingConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].client.maximum-connection-pool-size", @@ -1240,44 +236,44 @@ "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-certificate-password", "type": "java.lang.String", "description": "Password of the certificate file.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-certificate-path", "type": "java.lang.String", "description": "Path of a PEM certificate file to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-id", "type": "java.lang.String", "description": "Client ID to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.client-secret", "type": "java.lang.String", "description": "Client secret to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled", "type": "java.lang.Boolean", "description": "Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties", + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties", "defaultValue": false }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.password", "type": "java.lang.String", "description": "Password to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].credential.username", "type": "java.lang.String", "description": "Username to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].enabled", @@ -1302,139 +298,139 @@ "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.cloud-type", "type": "com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider$CloudType", "description": "Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_US_GOVERNMENT, OTHER. The default value is `AZURE`.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-endpoint", "type": "java.lang.String", "description": "The Microsoft Entra endpoint to connect to.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-graph-api-version", "type": "java.lang.String", "description": "The Azure Active Directory Graph API version.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-graph-endpoint", "type": "java.lang.String", "description": "The Azure Active Directory Graph endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.active-directory-resource-id", "type": "java.lang.String", "description": "The Microsoft Entra resource ID.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-application-insights-endpoint", "type": "java.lang.String", "description": "The Azure Application Insights endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-data-lake-analytics-catalog-and-job-endpoint-suffix", "type": "java.lang.String", "description": "The Data Lake analytics catalog and job endpoint suffix.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-data-lake-store-file-system-endpoint-suffix", "type": "java.lang.String", "description": "The Data Lake storage file system endpoint suffix.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.azure-log-analytics-endpoint", "type": "java.lang.String", "description": "The Azure Log Analytics endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.data-lake-endpoint-resource-id", "type": "java.lang.String", "description": "The Data Lake endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.gallery-endpoint", "type": "java.lang.String", "description": "The gallery endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.key-vault-dns-suffix", "type": "java.lang.String", "description": "The Key Vault DNS suffix.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.management-endpoint", "type": "java.lang.String", "description": "The management service endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.microsoft-graph-endpoint", "type": "java.lang.String", "description": "The Microsoft Graph endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.portal", "type": "java.lang.String", "description": "The management portal URL.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.publishing-profile", "type": "java.lang.String", "description": "The publishing settings file URL.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.resource-manager-endpoint", "type": "java.lang.String", "description": "The resource management endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.sql-management-endpoint", "type": "java.lang.String", "description": "The SQL management endpoint.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.sql-server-hostname-suffix", "type": "java.lang.String", "description": "The SQL Server hostname suffix.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.environment.storage-endpoint-suffix", "type": "java.lang.String", "description": "The Storage endpoint suffix.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties$AzureEnvironmentConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.subscription-id", "type": "java.lang.String", "description": "Subscription ID to use when connecting to Azure resources.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].profile.tenant-id", "type": "java.lang.String", "description": "Tenant ID for Azure resources.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].proxy.hostname", "type": "java.lang.String", "description": "The host of the proxy.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.ProxyConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].proxy.non-proxy-hosts", @@ -1446,25 +442,25 @@ "name": "spring.cloud.azure.keyvault.secret.property-sources[0].proxy.password", "type": "java.lang.String", "description": "Password used to authenticate with the proxy.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.ProxyConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].proxy.port", "type": "java.lang.Integer", "description": "The port of the proxy.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.ProxyConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].proxy.type", "type": "java.lang.String", "description": "Type of the proxy. For instance of http, 'http', 'socks4', 'socks5'. For instance of amqp, 'http', 'socks'.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.ProxyConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].proxy.username", "type": "java.lang.String", "description": "Username used to authenticate with the proxy.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.proxy.ProxyConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].resource.region", @@ -1488,37 +484,37 @@ "name": "spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.base-delay", "type": "java.time.Duration", "description": "Amount of time(Duration) to wait between retry attempts.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.retry.ExponentialRetryConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.ExponentialRetryConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.max-delay", "type": "java.time.Duration", "description": "Maximum permissible amount of time(duration) between retry attempts.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.retry.ExponentialRetryConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.ExponentialRetryConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].retry.exponential.max-retries", "type": "java.lang.Integer", "description": "The maximum number of attempts.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.retry.ExponentialRetryConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.ExponentialRetryConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].retry.fixed.delay", "type": "java.time.Duration", "description": "Amount of time(Duration) to wait between retry attempts.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.retry.FixedRetryConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.FixedRetryConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].retry.fixed.max-retries", "type": "java.lang.Integer", "description": "The maximum number of attempts.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.retry.FixedRetryConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.FixedRetryConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].retry.mode", "type": "com.azure.spring.cloud.core.provider.RetryOptionsProvider$RetryMode", "description": "The retry backoff mode when retrying. Supported types are: FIXED, EXPONENTIAL.", - "sourceType": "com.azure.spring.cloud.autoconfigure.properties.core.retry.RetryConfigurationProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.properties.core.retry.RetryConfigurationProperties" }, { "name": "spring.cloud.azure.keyvault.secret.property-sources[0].secret-keys", @@ -1543,136 +539,68 @@ "name": "spring.datasource.azure.credential.client-id", "type": "java.lang.String", "description": "Client ID to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.client-secret", "type": "java.lang.String", "description": "Client secret to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.client-certificate-password", "type": "java.lang.String", "description": "Password of the certificate file.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.client-certificate-path", "type": "java.lang.String", "description": "Path of a PEM certificate file to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.username", "type": "java.lang.String", "description": "Username to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.password", "type": "java.lang.String", "description": "Password to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.credential.managed-identity-enabled", "type": "java.lang.Boolean", "description": "Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties", + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties", "defaultValue": false }, { "name": "spring.datasource.azure.profile.environment.active-directory-endpoint", "type": "java.lang.String", "description": "The Microsoft Entra endpoint to connect to.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.profile.tenant-id", "type": "java.lang.String", "description": "Tenant ID for Azure resources.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.profile.cloud-type", "type": "java.lang.String", "description": "Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_US_GOVERNMENT, OTHER. The default value is `AZURE`.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties" + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties" }, { "name": "spring.datasource.azure.passwordless-enabled", "type": "java.lang.Boolean", "description": "Whether to enable passwordless connections to Azure databases by using OAuth2 Microsoft Entra token credentials.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties", - "defaultValue": false - }, - { - "name": "spring.redis.azure.credential.client-id", - "type": "java.lang.String", - "description": "Client ID to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.credential.client-secret", - "type": "java.lang.String", - "description": "Client secret to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.credential.client-certificate-password", - "type": "java.lang.String", - "description": "Password of the certificate file.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.credential.client-certificate-path", - "type": "java.lang.String", - "description": "Path of a PEM certificate file to use when performing service principal authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.credential.username", - "type": "java.lang.String", - "description": "Username to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.credential.password", - "type": "java.lang.String", - "description": "Password to use when performing username\/password authentication with Azure.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.credential.managed-identity-enabled", - "type": "java.lang.Boolean", - "description": "Whether to enable managed identity to authenticate with Azure. If true and the client-id is set, will use the client ID as user assigned managed identity client ID.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties", - "defaultValue": false - }, - { - "name": "spring.redis.azure.profile.environment.active-directory-endpoint", - "type": "java.lang.String", - "description": "The Microsoft Entra endpoint to connect to.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.profile.tenant-id", - "type": "java.lang.String", - "description": "Tenant ID for Azure resources.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.profile.cloud-type", - "type": "java.lang.String", - "description": "Name of the Azure cloud to connect to. Supported types are: AZURE, AZURE_CHINA, AZURE_US_GOVERNMENT, OTHER. The default value is `AZURE`.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties" - }, - { - "name": "spring.redis.azure.passwordless-enabled", - "type": "java.lang.Boolean", - "description": "Whether to enable passwordless connections to Azure Redis Cache by using OAuth2 Microsoft Entra token credentials.", - "sourceType": "com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties", + "sourceType": "com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties", "defaultValue": false }, { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring.factories index 495139fbd3a4..3951cbadacc6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring.factories @@ -1,49 +1,8 @@ -org.springframework.boot.env.EnvironmentPostProcessor=com.azure.spring.cloud.autoconfigure.cloudfoundry.environment.VcapProcessor,\ -com.azure.spring.cloud.autoconfigure.keyvault.environment.KeyVaultEnvironmentPostProcessor,\ -com.azure.spring.cloud.autoconfigure.cloudfoundry.AzureCloudFoundryEnvironmentPostProcessor,\ -com.azure.spring.cloud.autoconfigure.context.AzureGlobalConfigurationEnvironmentPostProcessor,\ +org.springframework.boot.env.EnvironmentPostProcessor=\ +com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalConfigurationEnvironmentPostProcessor,\ +com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment.KeyVaultEnvironmentPostProcessor,\ com.azure.spring.cloud.autoconfigure.implementation.passwordless.AzurePasswordlessEnvironmentPostProcessor -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.azure.spring.cloud.autoconfigure.aad.AadAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.aad.AadAuthenticationFilterAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cResourceServerAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.redis.AzureRedisAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.appconfiguration.AzureAppConfigurationAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.cosmos.AzureCosmosAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.data.cosmos.CosmosDataAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.data.cosmos.CosmosRepositoriesAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.data.cosmos.CosmosReactiveRepositoriesAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsMessagingAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.implementation.eventgrid.AzureEventGridAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.kafka.AzureEventHubsKafkaOAuth2AutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.kafka.AzureEventHubsKafkaBinderOAuth2AutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.messaging.AzureMessagingListenerAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusMessagingAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobResourceAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.storage.fileshare.AzureStorageFileShareAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.storage.fileshare.AzureStorageFileShareResourceAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.storage.queue.AzureStorageQueueAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.storage.AzureStorageQueueMessagingAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.trace.sleuth.AzureSleuthAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.resourcemanager.AzureResourceManagerAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.resourcemanager.AzureEventHubsResourceManagerAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.resourcemanager.AzureStorageQueueResourceManagerAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.compatibility.AzureCompatibilityVerifierAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.jdbc.AzureJdbcAutoConfiguration,\ -com.azure.spring.cloud.autoconfigure.redis.AzureJedisPasswordlessAutoConfiguration - org.springframework.boot.diagnostics.FailureAnalyzer=\ com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureCompatibilityNotMetFailureAnalyzer diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring/aot.factories b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 000000000000..32f5794a27a4 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,5 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar= \ +com.azure.spring.cloud.autoconfigure.implementation.jdbc.PasswordlessRuntimeHints + +org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter=\ +com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration.AzureGlobalPropertiesBeanRegistrationExcludeFilter diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..c23b97895fc2 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,37 @@ +com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.AadAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.AadAuthenticationFilterAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.AadB2cAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.AadB2cResourceServerAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.redis.AzureRedisAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.cosmos.AzureCosmosAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsMessagingAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.eventgrid.AzureEventGridAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.kafka.AzureEventHubsKafkaOAuth2AutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.kafka.AzureEventHubsKafkaBinderOAuth2AutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.messaging.AzureMessagingListenerAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusMessagingAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.jms.ServiceBusJmsAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobResourceAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.AzureStorageFileShareAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.AzureStorageFileShareResourceAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueMessagingAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureResourceManagerAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureEventHubsResourceManagerAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureStorageQueueResourceManagerAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureCompatibilityVerifierAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.jdbc.AzureJdbcAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.CosmosDataAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.CosmosRepositoriesAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.CosmosReactiveRepositoriesAutoConfiguration +com.azure.spring.cloud.autoconfigure.implementation.data.redis.AzureLettucePasswordlessAutoConfiguration diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java deleted file mode 100644 index d8c0c4a082bb..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure; - -/** - * Fake credential shared in Tests - */ -public class FakeCredentialInTest { - /** - * Username placeholder - */ - public static final String USERNAME_PLACEHOLDER = "username"; - - /** - * Password placeholder - */ - public static final String PASSWORD_PLACEHOLDER = "password"; - - /** - * Client ID placeholder - */ - public static final String CLIENT_ID_PLACEHOLDER = "client-id"; - - /** - * Secret placeholder - */ - public static final String SECRET = "secret"; -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadJwtBearerTokenAuthenticationConverterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadJwtBearerTokenAuthenticationConverterTests.java deleted file mode 100644 index 3bd970539919..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadJwtBearerTokenAuthenticationConverterTests.java +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; - -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AadOAuth2AuthenticatedPrincipal; -import net.minidev.json.JSONArray; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.springframework.core.convert.converter.Converter; -import org.springframework.security.authentication.AbstractAuthenticationToken; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.oauth2.jwt.Jwt; - -import java.time.Instant; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.mockito.internal.verification.VerificationModeFactory.times; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class AadJwtBearerTokenAuthenticationConverterTests { - - private Jwt jwt = mock(Jwt.class); - private Map claims = new HashMap<>(); - private Map headers = new HashMap<>(); - private JSONArray jsonArray = new JSONArray().appendElement("User.read").appendElement("User.write"); - - @BeforeAll - void init() { - claims.put("iss", "fake-issuer"); - claims.put("tid", "fake-tid"); - claims.put("name", "fake-user"); - headers.put("kid", "kg2LYs2T0CTjIfj4rt6JIynen38"); - when(jwt.getClaim("scp")).thenReturn("Order.read Order.write"); - when(jwt.getClaim("roles")).thenReturn(jsonArray); - when(jwt.getTokenValue()).thenReturn("fake-token-value"); - when(jwt.getIssuedAt()).thenReturn(Instant.now()); - when(jwt.getHeaders()).thenReturn(headers); - when(jwt.getExpiresAt()).thenReturn(Instant.MAX); - when(jwt.getClaims()).thenReturn(claims); - } - - @Test - void testCreateUserPrincipal() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getClaims()).isNotEmpty(); - assertThat(principal.getIssuer()).isEqualTo(claims.get("iss")); - assertThat(principal.getTenantId()).isEqualTo(claims.get("tid")); - } - - @Test - void testNoArgumentsConstructorDefaultScopeAndRoleAuthorities() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getAttributes()).isNotEmpty(); - assertThat(principal.getAttributes()).hasSize(3); - assertThat(principal.getAuthorities()).hasSize(4); - } - - @Test - void testNoArgumentsConstructorExtractScopeAuthorities() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getAttributes()).isNotEmpty(); - assertThat(principal.getAttributes()).hasSize(3); - assertThat(principal.getAuthorities()).hasSize(4); - } - - @Test - void testParameterConstructorExtractScopeAuthorities() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter("scp"); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getAttributes()).isNotEmpty(); - assertThat(principal.getAttributes()).hasSize(3); - assertThat(principal.getAuthorities()).hasSize(2); - } - - @Test - void testParameterConstructorExtractRoleAuthorities() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter("roles", - "APPROLE_"); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getAttributes()).isNotEmpty(); - assertThat(principal.getAttributes()).hasSize(3); - assertThat(principal.getAuthorities()).hasSize(2); - } - - @Test - void testConstructorExtractRoleAuthoritiesWithAuthorityPrefixMapParameter() { - Map claimToAuthorityPrefixMap = new HashMap<>(); - claimToAuthorityPrefixMap.put("roles", "APPROLE_"); - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter("scp", claimToAuthorityPrefixMap); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getAttributes()).isNotEmpty(); - assertThat(principal.getAttributes()).hasSize(3); - assertThat(principal.getAuthorities()).hasSize(2); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - } - - @Test - void createTokenAuthenticationConverterWithGrantedAuthorityConverter() { - Converter> grantedAuthorityConverter = mock(TestJwtGrantedAuthoritiesConverter.class); - AadJwtBearerTokenAuthenticationConverter tokenAuthenticationConverter = new AadJwtBearerTokenAuthenticationConverter(grantedAuthorityConverter); - tokenAuthenticationConverter.convert(jwt); - verify(grantedAuthorityConverter, times(1)).convert(this.jwt); - } - - @Test - void createTokenAuthenticationConverterWithClaimNameAndGrantedAuthorityConverter() { - Converter> grantedAuthorityConverter = mock(TestJwtGrantedAuthoritiesConverter.class); - AadJwtBearerTokenAuthenticationConverter tokenAuthenticationConverter = new AadJwtBearerTokenAuthenticationConverter(AadJwtClaimNames.NAME, grantedAuthorityConverter); - AbstractAuthenticationToken abstractAuthenticationToken = tokenAuthenticationConverter.convert(jwt); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) abstractAuthenticationToken.getPrincipal(); - Assertions.assertEquals(principal.getName(), "fake-user"); - verify(grantedAuthorityConverter, times(1)).convert(this.jwt); - } - - class TestJwtGrantedAuthoritiesConverter implements Converter> { - @Override - public Collection convert(Jwt source) { - return null; - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadResourceServerConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadResourceServerConfigurationTests.java deleted file mode 100644 index 2d2f49f60579..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadResourceServerConfigurationTests.java +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.aad.configuration; - -import com.azure.spring.cloud.autoconfigure.aad.AadAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; -import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener; -import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; -import org.springframework.boot.logging.LogLevel; -import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.annotation.web.configurers.oauth2.server.resource.OAuth2ResourceServerConfigurer; -import org.springframework.security.web.SecurityFilterChain; - -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerRunner; -import static org.assertj.core.api.Assertions.assertThat; - -class AadResourceServerConfigurationTests { - @Test - void useDefaultWebSecurityConfigurerAdapter() { - resourceServerRunner() - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", - "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" - ) - .run(context -> { - assertThat(context).hasSingleBean(AadResourceServerWebSecurityConfigurerAdapter.class); - assertThat(context).hasSingleBean(AadResourceServerConfiguration.DefaultAadResourceServerWebSecurityConfigurerAdapter.class); - }); - } - - @Test - void useCustomWebSecurityConfigurerAdapter() { - resourceServerRunner() - .withUserConfiguration(TestAadResourceServerWebSecurityConfigurerAdapter.class) - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", - "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" - ) - .run(context -> { - assertThat(context).hasSingleBean(WebSecurityConfigurerAdapter.class); - assertThat(context).doesNotHaveBean(AadResourceServerConfiguration.DefaultAadResourceServerWebSecurityConfigurerAdapter.class); - assertThat(context).hasSingleBean(TestAadResourceServerWebSecurityConfigurerAdapter.class); - }); - } - - @Test - void useCustomSecurityFilterChain() { - new WebApplicationContextRunner() - .withConfiguration(AutoConfigurations.of( - HttpMessageConvertersAutoConfiguration.class, - RestTemplateAutoConfiguration.class)) - .withUserConfiguration(AzureGlobalPropertiesAutoConfiguration.class, - TestSecurityFilterChain.class, - AadAutoConfiguration.class) - .withInitializer(new ConditionEvaluationReportLoggingListener(LogLevel.INFO)) - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", - "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" - ) - .run(context -> { - assertThat(context).hasSingleBean(SecurityFilterChain.class); - assertThat(context).doesNotHaveBean(WebSecurityConfigurerAdapter.class); - assertThat(context).doesNotHaveBean(AadResourceServerConfiguration.DefaultAadResourceServerWebSecurityConfigurerAdapter.class); - assertThat(context).hasBean("testSecurityFilterChain"); - - }); - } - - @EnableWebSecurity - static class TestAadResourceServerWebSecurityConfigurerAdapter extends - AadResourceServerWebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - super.configure(http); - } - } - - @EnableWebSecurity - static class TestSecurityFilterChain { - - @Bean - public SecurityFilterChain testSecurityFilterChain(HttpSecurity http) throws Exception { - return http.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt).build(); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestClientRegistrations.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestClientRegistrations.java deleted file mode 100644 index d6f512bacf2a..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestClientRegistrations.java +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.aad.implementation; - -import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.core.AuthorizationGrantType; -import org.springframework.security.oauth2.core.ClientAuthenticationMethod; - -public class TestClientRegistrations { - - public static ClientRegistration.Builder clientRegistration(AuthorizationGrantType grantType, - ClientAuthenticationMethod method) { - return ClientRegistration - .withRegistrationId("test") - .clientId("test") - .clientSecret("test-secret") - .clientAuthenticationMethod(method) - .authorizationGrantType(grantType) - .tokenUri("http://localhost/token"); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/MicrosoftGraphConstants.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/MicrosoftGraphConstants.java deleted file mode 100644 index 6b6c4397d5be..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/MicrosoftGraphConstants.java +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; - -class MicrosoftGraphConstants { - - static final String BEARER_TOKEN = "Bearer real_jtw_bearer_token"; - static final String CLIENT_ID = "real_client_id"; - /** - * Token from https://docs.microsoft.com/azure/active-directory/develop/v2-id-and-access-tokens - */ - static final String JWT_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1" - + "iYTlnb0VLWSJ9.eyJhdWQiOiI2NzMxZGU3Ni0xNGE2LTQ5YWUtOTdiYy02ZWJhNjkxNDM5MWUiLCJpc3MiOiJodHRwczovL2xvZ2lu" - + "Lm1pY3Jvc29mdG9ubGluZS5jb20vYjk0MTk4MTgtMDlhZi00OWMyLWIwYzMtNjUzYWRjMWYzNzZlL3YyLjAiLCJpYXQiOjE0NTIyOD" - + "UzMzEsIm5iZiI6MTQ1MjI4NTMzMSwiZXhwIjoxNDUyMjg5MjMxLCJuYW1lIjoiQmFiZSBSdXRoIiwibm9uY2UiOiIxMjM0NSIsIm9p" - + "ZCI6ImExZGJkZGU4LWU0ZjktNDU3MS1hZDkzLTMwNTllMzc1MGQyMyIsInByZWZlcnJlZF91c2VybmFtZSI6InRoZWdyZWF0YmFtYm" - + "lub0BueXkub25taWNyb3NvZnQuY29tIiwic3ViIjoiTUY0Zi1nZ1dNRWppMTJLeW5KVU5RWnBoYVVUdkxjUXVnNWpkRjJubDAxUSIs" - + "InRpZCI6ImI5NDE5ODE4LTA5YWYtNDljMi1iMGMzLTY1M2FkYzFmMzc2ZSIsInZlciI6IjIuMCJ9.p_rYdrtJ1oCmgDBggNHB9O38K" - + "TnLCMGbMDODdirdmZbmJcTHiZDdtTc-hguu3krhbtOsoYM2HJeZM3Wsbp_YcfSKDY--X_NobMNsxbT7bqZHxDnA2jTMyrmt5v2EKUn" - + "EeVtSiJXyO3JWUq9R0dO-m4o9_8jGP6zHtR62zLaotTBYHmgeKpZgTFB9WtUq8DVdyMn_HSvQEfz-LWqckbcTwM_9RNKoGRVk38KCh" - + "VJo4z5LkksYRarDo8QgQ7xEKmYmPvRr_I7gvM2bmlZQds2OeqWLB1NSNbFZqyFOCgYn3bAQ-nEQSKwBaA36jYGPOVG2r2Qv1uKcpSO" - + "xzxaQybzYpQ"; -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadResourceServerConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadResourceServerConfigurationTests.java deleted file mode 100644 index 65451ed3aaf9..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadResourceServerConfigurationTests.java +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi; - -import com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadResourceServerConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.nimbusds.jwt.proc.JWTClaimsSetAwareJWSKeySelector; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.boot.test.context.FilteredClassLoader; -import org.springframework.core.convert.converter.Converter; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.oauth2.core.OAuth2TokenValidator; -import org.springframework.security.oauth2.jwt.Jwt; -import org.springframework.security.oauth2.jwt.JwtDecoder; -import org.springframework.security.oauth2.jwt.NimbusJwtDecoder; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; -import org.springframework.test.util.ReflectionTestUtils; - -import java.util.Collection; -import java.util.List; - -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerContextRunner; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.mock; - -class AadResourceServerConfigurationTests { - - @Test - void testNotExistBearerTokenAuthenticationToken() { - resourceServerContextRunner() - .withClassLoader(new FilteredClassLoader(BearerTokenAuthenticationToken.class)) - .run(context -> assertThrows(IllegalStateException.class, - () -> context.getBean(JWTClaimsSetAwareJWSKeySelector.class))); - } - - @Test - void testCreateJwtDecoderByJwkKeySetUri() { - resourceServerContextRunner() - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") - .run(context -> { - final JwtDecoder jwtDecoder = context.getBean(JwtDecoder.class); - assertThat(jwtDecoder).isNotNull(); - assertThat(jwtDecoder).isExactlyInstanceOf(NimbusJwtDecoder.class); - }); - } - - @Test - void testNotAudienceDefaultValidator() { - resourceServerContextRunner() - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") - .run(context -> { - AadAuthenticationProperties properties = context.getBean(AadAuthenticationProperties.class); - AadResourceServerConfiguration bean = context - .getBean(AadResourceServerConfiguration.class); - List> defaultValidator = bean.createDefaultValidator(properties); - assertThat(defaultValidator).isNotNull(); - assertThat(defaultValidator).hasSize(3); - }); - } - - @Test - void testExistAudienceDefaultValidator() { - resourceServerContextRunner() - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") - .run(context -> { - AadAuthenticationProperties properties = context.getBean(AadAuthenticationProperties.class); - AadResourceServerConfiguration bean = context - .getBean(AadResourceServerConfiguration.class); - List> defaultValidator = bean.createDefaultValidator(properties); - assertThat(defaultValidator).isNotNull(); - assertThat(defaultValidator).hasSize(3); - }); - } - - @Test - void testCreateWebSecurityConfigurerAdapter() { - resourceServerContextRunner() - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") - .run(context -> { - WebSecurityConfigurerAdapter webSecurityConfigurerAdapter = context - .getBean(AadResourceServerConfiguration.DefaultAadResourceServerWebSecurityConfigurerAdapter.class); - assertThat(webSecurityConfigurerAdapter).isNotNull(); - }); - } - @ParameterizedTest - @ValueSource(classes = { TestResourceServerConfigurationUsingConstructor.class, TestResourceServerConfigurationUsingMethod.class }) - @SuppressWarnings("unchecked") - void useCustomJwtGrantedAuthoritiesConverterUsingConstructor(Class configurationClass) { - resourceServerContextRunner() - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") - .withUserConfiguration(configurationClass) - .run(context -> { - WebSecurityConfigurerAdapter webSecurityConfigurerAdapter = (WebSecurityConfigurerAdapter) context.getBean(configurationClass); - Converter> converter = - (Converter) ReflectionTestUtils.getField(webSecurityConfigurerAdapter, "jwtGrantedAuthoritiesConverter"); - assertThat(converter).isNotNull(); - assertThat(converter).isInstanceOfAny(TestJwtGrantedAuthoritiesConverter.class); - assertThat(webSecurityConfigurerAdapter).isNotNull(); - }); - } - - @EnableWebSecurity - @EnableGlobalMethodSecurity(prePostEnabled = true) - static class TestResourceServerConfigurationUsingConstructor extends - AadResourceServerWebSecurityConfigurerAdapter { - - TestResourceServerConfigurationUsingConstructor() { - super(null, mock(TestJwtGrantedAuthoritiesConverter.class)); - } - - @Override - protected void configure(HttpSecurity http) throws Exception { - super.configure(http); - } - } - - @EnableWebSecurity - @EnableGlobalMethodSecurity(prePostEnabled = true) - static class TestResourceServerConfigurationUsingMethod extends - AadResourceServerWebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - super.configure(http); - } - - @Override - protected Converter> jwtGrantedAuthoritiesConverter() { - return mock(TestJwtGrantedAuthoritiesConverter.class); - } - } - - class TestJwtGrantedAuthoritiesConverter implements Converter> { - @Override - public Collection convert(Jwt source) { - return null; - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConstants.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConstants.java deleted file mode 100644 index 8b23a88d2f63..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cConstants.java +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; - - -import static com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties.PREFIX; - -class AadB2cConstants { - static final String AUTHENTICATE_ADDITIONAL_PARAMETERS_LOGIN_HINT = ".authenticate-additional-parameters" - + ".login-hint"; - - static final String AUTHENTICATE_ADDITIONAL_PARAMETERS_PROMPT = ".authenticate-additional-parameters.prompt"; - - static final String PROMPT = "prompt"; - - static final String LOGIN_HINT = "login-hint"; - - static final Object TEST_PROMPT = "fake-prompt"; - - static final String TEST_LOGIN_HINT = "fake-login-hint"; - - static final String TEST_BASE_URI = "https://faketenant.b2clogin.com/faketenant.onmicrosoft.com/"; - - static final String TEST_CLIENT_ID = "fake-client-id"; - - static final String TEST_TENANT_ID = "fake-tenant-id"; - - static final String TEST_CLIENT_SECRET = "fake-client-secret"; - static final String TEST_APP_ID_URI = "https://fake-tenant.onmicrosoft.com/custom"; - - static final String TEST_KEY_SIGN_UP_OR_IN = "sign-up-or-sign-in"; - static final String TEST_SIGN_UP_OR_IN_NAME = "fake-sign-in-or-up"; - - static final Object TEST_KEY_SIGN_IN = "sign-in"; - static final Object TEST_SIGN_IN_NAME = "fake-sign-in"; - - static final Object TEST_KEY_SIGN_UP = "sign-up"; - static final Object TEST_SIGN_UP_NAME = "fake-sign-up"; - - static final String TEST_KEY_PROFILE_EDIT = "profile-edit"; - static final String TEST_PROFILE_EDIT_NAME = "profile_edit"; - - static final String TEST_LOGOUT_SUCCESS_URL = "https://fake-logout-success-url"; - - static final String TEST_CLIENT_CREDENTIAL_SCOPES = "https://fake-tenant.onmicrosoft.com/other/.default"; - static final String TEST_CLIENT_CREDENTIAL_GRANT_TYPE = "client_credentials"; - - static final String CLIENT_CREDENTIAL_NAME = "webApiA"; - - static final String BASE_URI = String.format("%s.%s", PREFIX, "base-uri"); - - static final String TEST_ATTRIBUTE_NAME = String.format("%s.%s", PREFIX, "name"); - - static final String USER_NAME_ATTRIBUTE_NAME = String.format("%s.%s", PREFIX, "user-name-attribute-name"); - - static final String CLIENT_ID = String.format("%s.%s", PREFIX, "credential.client-id"); - - static final String TENANT_ID = String.format("%s.%s", PREFIX, "profile.tenant-id"); - - static final String CLIENT_SECRET = String.format("%s.%s", PREFIX, "credential.client-secret"); - static final String APP_ID_URI = String.format("%s.%s", PREFIX, "app-id-uri"); - - static final String LOGOUT_SUCCESS_URL = String.format("%s.%s", PREFIX, "logout-success-url"); - - static final String LOGIN_FLOW = String.format("%s.%s", PREFIX, "login-flow"); - - static final String USER_FLOWS = String.format("%s.%s", PREFIX, "user-flows"); - - static final Object CONFIG_PROMPT = String.format("%s.%s", PREFIX, - AUTHENTICATE_ADDITIONAL_PARAMETERS_PROMPT); - - static final String CONFIG_LOGIN_HINT = String.format("%s.%s", PREFIX, - AUTHENTICATE_ADDITIONAL_PARAMETERS_LOGIN_HINT); - - static final String AUTHORIZATION_CLIENTS = String.format("%s.%s", PREFIX, "authorization-clients"); -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUserPrincipalTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUserPrincipalTests.java deleted file mode 100644 index 2919fe55aa2b..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUserPrincipalTests.java +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; - -import com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter; -import com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AadOAuth2AuthenticatedPrincipal; -import net.minidev.json.JSONArray; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; -import org.springframework.security.authentication.AbstractAuthenticationToken; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.oauth2.jwt.Jwt; - -import java.time.Instant; -import java.util.HashMap; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class AadB2cUserPrincipalTests { - - private Jwt jwt; - private Map claims; - private Map headers; - private JSONArray jsonArray = new JSONArray().appendElement("User.read").appendElement("User.write"); - - @BeforeEach - void init() { - claims = new HashMap<>(); - claims.put("iss", "fake-issuer"); - claims.put("tid", "fake-tid"); - - headers = new HashMap<>(); - headers.put("kid", "kg2LYs2T0CTjIfj4rt6JIynen38"); - - jwt = mock(Jwt.class); - when(jwt.getClaim("scp")).thenReturn("Order.read Order.write"); - when(jwt.getClaim("roles")).thenReturn(jsonArray); - when(jwt.getTokenValue()).thenReturn("fake-token-value"); - when(jwt.getIssuedAt()).thenReturn(Instant.now()); - when(jwt.getHeaders()).thenReturn(headers); - when(jwt.getExpiresAt()).thenReturn(Instant.MAX); - when(jwt.getClaims()).thenReturn(claims); - } - - @Test - void testCreateUserPrincipal() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - Assertions.assertTrue(authenticationToken.getPrincipal().getClass().isAssignableFrom(AadOAuth2AuthenticatedPrincipal.class)); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - Assertions.assertFalse(principal.getClaims().isEmpty()); - Assertions.assertEquals(principal.getIssuer(), claims.get("iss")); - Assertions.assertEquals(principal.getTenantId(), claims.get("tid")); - } - - @Test - void testNoArgumentsConstructorDefaultScopeAndRoleAuthorities() { - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - Assertions.assertTrue(authenticationToken.getPrincipal().getClass().isAssignableFrom(AadOAuth2AuthenticatedPrincipal.class)); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - Assertions.assertFalse(principal.getAttributes().isEmpty()); - Assertions.assertEquals(2, principal.getAttributes().size()); - Assertions.assertEquals(4, principal.getAuthorities().size()); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - } - - @Test - void testNoArgumentsConstructorExtractScopeAuthorities() { - when(jwt.getClaim("roles")).thenReturn(null); - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - Assertions.assertTrue(authenticationToken.getPrincipal().getClass().isAssignableFrom(AadOAuth2AuthenticatedPrincipal.class)); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - Assertions.assertFalse(principal.getAttributes().isEmpty()); - Assertions.assertEquals(2, principal.getAttributes().size()); - Assertions.assertEquals(2, principal.getAuthorities().size()); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.write"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.read"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - } - - @Test - void testNoArgumentsConstructorExtractRoleAuthorities() { - when(jwt.getClaim("scp")).thenReturn(null); - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter(); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - Assertions.assertTrue(authenticationToken.getPrincipal().getClass().isAssignableFrom(AadOAuth2AuthenticatedPrincipal.class)); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - Assertions.assertFalse(principal.getAttributes().isEmpty()); - Assertions.assertEquals(2, principal.getAttributes().size()); - Assertions.assertEquals(2, principal.getAuthorities().size()); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.read"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.write"))); - } - - @Test - void testConstructorExtractRoleAuthoritiesWithAuthorityPrefixMapParameter() { - when(jwt.getClaim("scp")).thenReturn(null); - Map claimToAuthorityPrefixMap = new HashMap<>(); - claimToAuthorityPrefixMap.put("roles", "APPROLE_"); - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter("sub", claimToAuthorityPrefixMap); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - assertThat(authenticationToken.getPrincipal()).isExactlyInstanceOf(AadOAuth2AuthenticatedPrincipal.class); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - assertThat(principal.getAttributes()).isNotEmpty(); - assertThat(principal.getAttributes()).hasSize(2); - assertThat(principal.getAuthorities()).hasSize(2); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - } - - @Test - void testParameterConstructorExtractScopeAuthorities() { - when(jwt.getClaim("roles")).thenReturn(null); - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter("scp"); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - Assertions.assertTrue(authenticationToken.getPrincipal().getClass().isAssignableFrom(AadOAuth2AuthenticatedPrincipal.class)); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - Assertions.assertFalse(principal.getAttributes().isEmpty()); - Assertions.assertEquals(2, principal.getAttributes().size()); - Assertions.assertEquals(2, principal.getAuthorities().size()); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.write"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.read"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - } - - @Test - void testParameterConstructorExtractRoleAuthorities() { - when(jwt.getClaim("scp")).thenReturn(null); - AadJwtBearerTokenAuthenticationConverter converter = new AadJwtBearerTokenAuthenticationConverter("roles", - "APPROLE_"); - AbstractAuthenticationToken authenticationToken = converter.convert(jwt); - Assertions.assertTrue(authenticationToken.getPrincipal().getClass().isAssignableFrom(AadOAuth2AuthenticatedPrincipal.class)); - AadOAuth2AuthenticatedPrincipal principal = (AadOAuth2AuthenticatedPrincipal) authenticationToken - .getPrincipal(); - Assertions.assertFalse(principal.getAttributes().isEmpty()); - Assertions.assertEquals(2, principal.getAttributes().size()); - Assertions.assertEquals(2, principal.getAuthorities().size()); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.read"))); - Assertions.assertTrue(principal.getAuthorities().contains(new SimpleGrantedAuthority("APPROLE_User.write"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.read"))); - Assertions.assertFalse(principal.getAuthorities().contains(new SimpleGrantedAuthority("SCOPE_Order.write"))); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCloudFoundryEnvironmentPostProcessorTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCloudFoundryEnvironmentPostProcessorTests.java deleted file mode 100644 index 4c293b5b731d..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/AzureCloudFoundryEnvironmentPostProcessorTests.java +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry; - -import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; -import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; -import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.properties.AzureStorageBlobProperties; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.data.redis.RedisProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.test.context.assertj.AssertableApplicationContext; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ClassPathResource; - -import java.io.IOException; -import java.nio.file.Files; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * - */ -class AzureCloudFoundryEnvironmentPostProcessorTests { - - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withInitializer( - context -> new AzureCloudFoundryEnvironmentPostProcessor() - .postProcessEnvironment(context.getEnvironment(), null) - ) - .withUserConfiguration(AzureCfEnvPPTestConfiguration.class); - - @Test - public void testConfigurationProperties() throws IOException { - String vcapFileContents = new String(Files.readAllBytes(new ClassPathResource("VCAP_SERVICES").getFile() - .toPath())); - this.contextRunner - .withSystemProperties("VCAP_SERVICES=" + vcapFileContents) - .run(context -> { - assertThat(context).hasSingleBean(AzureProperties.class); - AzureProperties azureProperties = context.getBean(AzureProperties.class); - assertServiceBus(azureProperties.getServicebus()); - assertStorage(azureProperties.getStorage().getBlob()); - assertEventhub(azureProperties.getEventhubs()); - assertRedis(context); - }); - } - - private void assertRedis(AssertableApplicationContext context) { - RedisProperties redisProperties = context.getBean(RedisProperties.class); - assertThat(redisProperties.getHost()).isEqualTo("fake.redis.cache.windows.net"); - assertThat(redisProperties.getPassword()).isEqualTo("fakepwd="); - assertThat(redisProperties.getPort()).isEqualTo(6379); - } - - private void assertStorage(AzureStorageBlobProperties storageProperties) { - assertThat(storageProperties.getAccountName()).isEqualTo("fake"); - assertThat(storageProperties.getAccountKey()).isEqualTo("fakekey=="); - } - - private void assertEventhub(AzureEventHubsProperties eventHubProperties) { - assertThat(eventHubProperties.getProcessor().getCheckpointStore().getAccountName()).isEqualTo("fake"); - assertThat(eventHubProperties.getProcessor().getCheckpointStore().getAccountKey()).isEqualTo("fakekey=="); - assertThat(eventHubProperties.getConnectionString()).isEqualTo( - "Endpoint=sb://fake.servicebus.windows.net/;" - + "SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=fakelongstring="); - } - - private void assertServiceBus(AzureServiceBusProperties serviceBusProperties) { - assertThat(serviceBusProperties.getConnectionString()).isEqualTo( - "Endpoint=sb://fake.servicebus.windows.net/;" - + "SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=fakekey="); - } - - @EnableConfigurationProperties(RedisProperties.class) - @Configuration - static class AzureCfEnvPPTestConfiguration { - - @Bean - AzureProperties azureProperties() { - return new AzureProperties(); - } - } - - @ConfigurationProperties(prefix = "spring.cloud.azure") - static class AzureProperties { - private final AzureServiceBusProperties servicebus = new AzureServiceBusProperties(); - private final AzureEventHubsProperties eventhubs = new AzureEventHubsProperties(); - private final Storage storage = new Storage(); - - static class Storage { - private final AzureStorageBlobProperties blob = new AzureStorageBlobProperties(); - - public AzureStorageBlobProperties getBlob() { - return blob; - } - } - - public AzureServiceBusProperties getServicebus() { - return servicebus; - } - - public AzureEventHubsProperties getEventhubs() { - return eventhubs; - } - - public Storage getStorage() { - return storage; - } - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java deleted file mode 100644 index a3468fdc3331..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.cloudfoundry.environment; - -import org.junit.jupiter.api.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.test.context.ContextConfiguration; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; - -@SpringBootTest -@ContextConfiguration(classes = {VcapProcessor.class}) -public class AzureCloudFoundryServiceApplicationTests { - - private static final Logger LOG = LoggerFactory.getLogger(AzureCloudFoundryServiceApplicationTests.class); - - @Autowired - private VcapProcessor parser; - - @Test - public void testVcapSingleService() throws IOException { - final Resource resource = new ClassPathResource("cloudfoundry/vcap1.json"); - final String content; - try { - content = new String(Files.readAllBytes(Paths.get(resource.getURI()))); - final VcapPojo[] pojos = parser.parseVcapService(content).toArray(new VcapPojo[0]); - assertNotNull(pojos); - assertEquals(1, pojos.length); - final VcapPojo pojo = pojos[0]; - - LOG.debug("pojo = " + pojo); - final VcapServiceConfig config = pojo.getServiceConfig(); - assertEquals(3, config.getCredentials().size()); - assertEquals(2, config.getTags().length); - assertEquals(0, config.getVolumeMounts().length); - assertEquals("azure-storage", config.getLabel()); - assertEquals("provider", config.getProvider()); - assertEquals("azure-storage", pojo.getServiceBrokerName()); - assertEquals("azure-storage-service", config.getName()); - assertEquals("standard", config.getPlan()); - assertNull(config.getSyslogDrainUrl()); - assertEquals("Azure", config.getTags()[0]); - assertEquals("Storage", config.getTags()[1]); - - assertEquals("pak", config.getCredentials().get("primary_access_key")); - assertEquals("sak", config.getCredentials().get("secondary_access_key")); - assertEquals("sam", config.getCredentials().get("storage_account_name")); - } catch (IOException e) { - LOG.error("Error reading json file", e); - throw e; - } - } - - @Test - public void testVcapSingleServiceWithNulls() throws IOException { - final Resource resource = new ClassPathResource("cloudfoundry/vcap2.json"); - final String content; - try { - content = new String( - Files.readAllBytes(Paths.get(resource.getURI()))); - final VcapPojo[] pojos = parser.parseVcapService(content).toArray(new VcapPojo[0]); - assertNotNull(pojos); - assertEquals(1, pojos.length); - final VcapPojo pojo = pojos[0]; - - LOG.debug("pojo = " + pojo); - final VcapServiceConfig config = pojo.getServiceConfig(); - assertEquals(4, config.getCredentials().size()); - assertEquals(0, config.getTags().length); - assertEquals(0, config.getVolumeMounts().length); - assertEquals("azure-documentdb", config.getLabel()); - assertNull(config.getProvider()); - assertEquals("azure-documentdb", pojo.getServiceBrokerName()); - assertEquals("mydocumentdb", config.getName()); - assertEquals("standard", config.getPlan()); - assertNull(config.getSyslogDrainUrl()); - - assertEquals("docdb123mj", config.getCredentials().get("documentdb_database_id")); - assertEquals("dbs/ZFxCAA==/", config.getCredentials().get("documentdb_database_link")); - assertEquals("https://hostname:443/", config.getCredentials().get("documentdb_host_endpoint")); - assertEquals( - "fakeCredentialPlaceholder", - config.getCredentials().get("documentdb_master_key")); - } catch (IOException e) { - LOG.error("Error reading json file", e); - throw e; - } - } - - @Test - public void testVcapUserProvidedService() throws IOException { - final Resource resource = new ClassPathResource("cloudfoundry/vcap3.json"); - final String content; - try { - content = new String( - Files.readAllBytes(Paths.get(resource.getURI()))); - final VcapPojo[] pojos = parser.parseVcapService(content).toArray(new VcapPojo[0]); - assertNotNull(pojos); - assertEquals(1, pojos.length); - final VcapPojo pojo = pojos[0]; - - LOG.debug("pojo = " + pojo); - final VcapServiceConfig config = pojo.getServiceConfig(); - assertEquals(4, config.getCredentials().size()); - assertEquals(0, config.getTags().length); - assertEquals(0, config.getVolumeMounts().length); - assertEquals("user-provided", config.getLabel()); - assertNull(config.getProvider()); - assertEquals("azure-documentdb", pojo.getServiceBrokerName()); - assertEquals("mydocumentdb", config.getName()); - assertEquals("standard", config.getPlan()); - assertNull(config.getSyslogDrainUrl()); - - assertEquals("docdb123mj", config.getCredentials().get("documentdb_database_id")); - assertEquals("dbs/ZFxCAA==/", config.getCredentials().get("documentdb_database_link")); - assertEquals("https://hostname:443/", config.getCredentials().get("documentdb_host_endpoint")); - assertEquals( - "fakeCredentialPlaceholder", - config.getCredentials().get("documentdb_master_key")); - } catch (IOException e) { - LOG.error("Error reading json file", e); - throw e; - } - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/AbstractAzureServiceConfigurationTests.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/AbstractAzureServiceConfigurationTests.java index 65c0d591c758..9285faecaf06 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/AbstractAzureServiceConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure; +package com.azure.spring.cloud.autoconfigure.implementation; import com.azure.core.credential.TokenCredential; import com.azure.identity.AzureAuthorityHosts; @@ -9,8 +9,8 @@ import com.azure.identity.ClientSecretCredential; import com.azure.identity.UsernamePasswordCredential; import com.azure.identity.implementation.IdentityClient; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver; import com.azure.spring.cloud.core.implementation.factory.AbstractAzureServiceClientBuilderFactory; import com.azure.spring.cloud.core.properties.AzureProperties; @@ -20,15 +20,11 @@ import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.CLIENT_ID_PLACEHOLDER; -import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.PASSWORD_PLACEHOLDER; -import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.SECRET; -import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.USERNAME_PLACEHOLDER; import static com.azure.spring.cloud.core.implementation.util.ReflectionUtils.getField; import static org.assertj.core.api.Assertions.assertThat; public abstract class AbstractAzureServiceConfigurationTests, - P extends AzureProperties> { + P extends AzureProperties> { protected abstract ApplicationContextRunner getMinimalContextRunner(); @@ -44,8 +40,8 @@ protected void usGovCloudShouldWorkWithClientSecretCredential() { .withPropertyValues( getPropertyPrefix() + ".profile.cloud-type=AZURE_US_GOVERNMENT", getPropertyPrefix() + ".profile.tenant-id=fake-tenant-id", - getPropertyPrefix() + ".credential." + CLIENT_ID_PLACEHOLDER + "=fakeClientIdPlaceholder", - getPropertyPrefix() + ".credential.client-" + SECRET + "=fake-client-secret" + getPropertyPrefix() + ".credential.client-id=fakeClientIdPlaceholder", + getPropertyPrefix() + ".credential.client-secret=fake-client-secret" ) .withConfiguration(AutoConfigurations.of( AzureTokenCredentialAutoConfiguration.class, @@ -62,7 +58,7 @@ protected void usGovCloudShouldWorkWithClientCertificateCredential() { .withPropertyValues( getPropertyPrefix() + ".profile.cloud-type=AZURE_US_GOVERNMENT", getPropertyPrefix() + ".profile.tenant-id=fake-tenant-id", - getPropertyPrefix() + ".credential." + CLIENT_ID_PLACEHOLDER + "=fakeClientIdPlaceholder", + getPropertyPrefix() + ".credential.client-id=fakeClientIdPlaceholder", getPropertyPrefix() + ".credential.client-certificate-path=fake-client-cert-path" ) .withConfiguration(AutoConfigurations.of( @@ -79,9 +75,9 @@ protected void usGovCloudShouldWorkWithUsernamePasswordCredential() { getMinimalContextRunner() .withPropertyValues( getPropertyPrefix() + ".profile.cloud-type=AZURE_US_GOVERNMENT", - getPropertyPrefix() + ".credential." + CLIENT_ID_PLACEHOLDER + "=fakeClientIdPlaceholder", - getPropertyPrefix() + ".credential." + USERNAME_PLACEHOLDER + "=fakeNamePlaceholder", - getPropertyPrefix() + ".credential." + PASSWORD_PLACEHOLDER + "=fakePasswordPlaceholder" + getPropertyPrefix() + ".credential.client-id=fakeClientIdPlaceholder", + getPropertyPrefix() + ".credential.username=fakeNamePlaceholder", + getPropertyPrefix() + ".credential.password=fakePasswordPlaceholder" ) .withConfiguration(AutoConfigurations.of( AzureTokenCredentialAutoConfiguration.class, @@ -110,7 +106,7 @@ private void assertSovereignCloudsSetInCredential(AssertableApplicationConte private AzureTokenCredentialResolver getAzureTokenCredentialResolver(T builderFactory) { return (AzureTokenCredentialResolver) getField(getBuilderFactoryType(), - "tokenCredentialResolver", builderFactory); + "tokenCredentialResolver", builderFactory); } private IdentityClient getIdentityClient(TokenCredential credential) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AzureServiceConfigurationBaseTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/AzureServiceConfigurationBaseTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AzureServiceConfigurationBaseTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/AzureServiceConfigurationBaseTests.java index 7a02683aa7ca..ec09db281012 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AzureServiceConfigurationBaseTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/AzureServiceConfigurationBaseTests.java @@ -1,20 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure; +package com.azure.spring.cloud.autoconfigure.implementation; import com.azure.core.amqp.AmqpTransportType; import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.core.management.AzureEnvironment; import com.azure.cosmos.CosmosClientBuilder; import com.azure.security.keyvault.secrets.SecretClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.cosmos.AzureCosmosAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.cosmos.AzureCosmosAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import com.azure.spring.cloud.core.properties.client.HeaderProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import org.assertj.core.extractor.Extractors; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/TestBuilderCustomizer.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/TestBuilderCustomizer.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/TestBuilderCustomizer.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/TestBuilderCustomizer.java index f8310a0a6eb2..3e7d13692112 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/TestBuilderCustomizer.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/TestBuilderCustomizer.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure; +package com.azure.spring.cloud.autoconfigure.implementation; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/RestTemplateTestUtil.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/RestTemplateTestUtil.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/RestTemplateTestUtil.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/RestTemplateTestUtil.java index f9d71bc7a184..a9c364bfc766 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/RestTemplateTestUtil.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/RestTemplateTestUtil.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapp.AadAzureDelegatedOAuth2AuthorizedClientProvider; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadAzureDelegatedOAuth2AuthorizedClientProvider; import com.nimbusds.jose.jwk.source.RemoteJWKSet; import com.nimbusds.jose.proc.JWSVerificationKeySelector; import com.nimbusds.jose.util.ResourceRetriever; @@ -30,7 +30,7 @@ import java.util.List; import java.util.stream.Collectors; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.RestTemplateProxyCustomizerTestConfiguration.FACTORY; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.RestTemplateProxyCustomizerTestConfiguration.FACTORY; import static com.azure.spring.cloud.core.implementation.util.ReflectionUtils.getField; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -74,8 +74,8 @@ private static OAuth2AuthorizationCodeAuthenticationProvider getOAuth2Authorizat private static void assertRestTemplateWellConfiguredForAllOAuth2AuthorizedClientProviders(ApplicationContext context) { List providers = getAllOAuth2AuthorizedClientProviderThatShouldConfiguredRestTemplate(context); - // 3 providers: refreshToken, clientCredential, password. - assertTrue(providers.size() >= 3); + // 3 providers: refreshToken, clientCredential. + assertTrue(providers.size() >= 2); providers.forEach(provider -> { OAuth2AccessTokenResponseClient client = (OAuth2AccessTokenResponseClient) getField(provider.getClass(), "accessTokenResponseClient", provider); assertRestTemplateWellConfiguredInOAuth2AccessTokenResponseClient(client); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/WebApplicationContextRunnerUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/WebApplicationContextRunnerUtils.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/WebApplicationContextRunnerUtils.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/WebApplicationContextRunnerUtils.java index 708e1499730b..a619816dc9e1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/WebApplicationContextRunnerUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/WebApplicationContextRunnerUtils.java @@ -1,21 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aad; -import com.azure.spring.cloud.autoconfigure.aad.AadAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.AadAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener; import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; -import org.springframework.boot.logging.LogLevel; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.http.HttpEntity; import org.springframework.http.RequestEntity; import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; import org.springframework.util.MultiValueMap; import java.util.Optional; @@ -28,7 +27,7 @@ public static WebApplicationContextRunner oauthClientAndResourceServerRunner() { HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) .withUserConfiguration(AzureGlobalPropertiesAutoConfiguration.class, AadAutoConfiguration.class) - .withInitializer(new ConditionEvaluationReportLoggingListener(LogLevel.INFO)); + .withInitializer(new ConditionEvaluationReportLoggingListener()); } public static WebApplicationContextRunner oauthClientRunner() { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadAutoConfigurationServletConditionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAutoConfigurationServletConditionTests.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadAutoConfigurationServletConditionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAutoConfigurationServletConditionTests.java index 6ea26805591b..ff817f148995 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadAutoConfigurationServletConditionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadAutoConfigurationServletConditionTests.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.FilteredClassLoader; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.oauthClientAndResourceServerRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.oauthClientAndResourceServerRunner; import static org.assertj.core.api.Assertions.assertThat; -public class AadAutoConfigurationServletConditionTests { +class AadAutoConfigurationServletConditionTests { private static final String SERVLET_WEB_APPLICATION_CLASS = "org.springframework.web.context.support.GenericWebApplicationContext"; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadOAuth2ClientConfigurationTests.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadOAuth2ClientConfigurationTests.java index e4d00ab097fd..1e134c57e58b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadOAuth2ClientConfigurationTests.java @@ -1,14 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadOAuth2ClientConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.implementation.RestTemplateProxyCustomizerTestConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.implementation.TestJwks; -import com.azure.spring.cloud.autoconfigure.aad.implementation.webapi.AadJwtBearerGrantRequestEntityConverter; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.jwk.TestJwks; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadJwtBearerGrantRequestEntityConverter; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.OAuth2ClientAuthenticationJwkResolver; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.RSAKey; import com.nimbusds.jose.util.Base64URL; @@ -34,11 +33,11 @@ import java.util.Arrays; import java.util.Set; -import static com.azure.spring.cloud.autoconfigure.aad.RestTemplateTestUtil.assertRestTemplateWellConfigured; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.oauthClientAndResourceServerRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerWithOboContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.webApplicationContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.RestTemplateTestUtil.assertRestTemplateWellConfigured; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.oauthClientAndResourceServerRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerWithOboContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.webApplicationContextRunner; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; @@ -52,9 +51,9 @@ class AadOAuth2ClientConfigurationTests { @Test void testWithoutAnyPropertiesSet() { new WebApplicationContextRunner() - .withConfiguration(AutoConfigurations.of( - HttpMessageConvertersAutoConfiguration.class, - RestTemplateAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of( + HttpMessageConvertersAutoConfiguration.class, + RestTemplateAutoConfiguration.class)) .withUserConfiguration(AadOAuth2ClientConfiguration.class) .run(context -> { assertThat(context).doesNotHaveBean(AadAuthenticationProperties.class); @@ -104,9 +103,9 @@ void testResourceServerWithOboOnlyGraphClient() { "spring.cloud.azure.active-directory.authorization-clients.graph.scopes=https://graph.microsoft.com/User.Read") .run(context -> { final AadClientRegistrationRepository oboRepo = context.getBean( - AadClientRegistrationRepository.class); + AadClientRegistrationRepository.class); final OAuth2AuthorizedClientRepository aadOboRepo = context.getBean( - OAuth2AuthorizedClientRepository.class); + OAuth2AuthorizedClientRepository.class); ClientRegistration graph = oboRepo.findByRegistrationId("graph"); Set graphScopes = graph.getScopes(); @@ -153,9 +152,9 @@ void testResourceServerWithOboExistCustomAndGraphClient() { ) .run(context -> { final AadClientRegistrationRepository oboRepo = context.getBean( - AadClientRegistrationRepository.class); + AadClientRegistrationRepository.class); final OAuth2AuthorizedClientRepository aadOboRepo = context.getBean( - OAuth2AuthorizedClientRepository.class); + OAuth2AuthorizedClientRepository.class); ClientRegistration graph = oboRepo.findByRegistrationId("graph"); ClientRegistration custom = oboRepo.findByRegistrationId("custom"); @@ -184,15 +183,16 @@ void defaultConverterInJwtBearerOAuth2AuthorizedClientProviderWhenNotUsingPrivat .run(context -> { assertThat(context).doesNotHaveBean(OAuth2ClientAuthenticationJwkResolver.class); final JwtBearerOAuth2AuthorizedClientProvider jwtBearerProvider = context.getBean( - JwtBearerOAuth2AuthorizedClientProvider.class); + JwtBearerOAuth2AuthorizedClientProvider.class); final ClientRegistrationRepository clientRepository = context.getBean( - ClientRegistrationRepository.class); + ClientRegistrationRepository.class); MultiValueMap parameters = convertParameters(jwtBearerProvider, clientRepository); assertThat(parameters).containsEntry("requested_token_use", Arrays.asList("on_behalf_of")); }); } @Test + @SuppressWarnings("deprecation") void customConverterInJwtBearerOAuth2AuthorizedClientProviderWhenUsingPrivateKeyJwtMethod() { RSAKey rsaJwk = spy(TestJwks.DEFAULT_RSA_JWK); OAuth2ClientAuthenticationJwkResolver jwkResolver = spy(new TestOAuth2ClientAuthenticationJwkResolver(rsaJwk)); @@ -214,9 +214,9 @@ void customConverterInJwtBearerOAuth2AuthorizedClientProviderWhenUsingPrivateKey .run(context -> { assertThat(context).hasSingleBean(OAuth2ClientAuthenticationJwkResolver.class); final JwtBearerOAuth2AuthorizedClientProvider jwtBearerProvider = context.getBean( - JwtBearerOAuth2AuthorizedClientProvider.class); + JwtBearerOAuth2AuthorizedClientProvider.class); final ClientRegistrationRepository clientRepository = context.getBean( - ClientRegistrationRepository.class); + ClientRegistrationRepository.class); MultiValueMap parameters = convertParameters(jwtBearerProvider, clientRepository); assertThat(parameters).containsEntry("requested_token_use", Arrays.asList("on_behalf_of")); @@ -228,44 +228,44 @@ void customConverterInJwtBearerOAuth2AuthorizedClientProviderWhenUsingPrivateKey @Test void restTemplateWellConfiguredWhenNotUsingPrivateKeyJwtMethod() { webApplicationContextRunner() - .withUserConfiguration(AadOAuth2ClientConfiguration.class, RestTemplateProxyCustomizerTestConfiguration.class) - .run(context -> { - assertThat(context).doesNotHaveBean(OAuth2ClientAuthenticationJwkResolver.class); - assertRestTemplateWellConfigured(context); - }); + .withUserConfiguration(AadOAuth2ClientConfiguration.class, RestTemplateProxyCustomizerTestConfiguration.class) + .run(context -> { + assertThat(context).doesNotHaveBean(OAuth2ClientAuthenticationJwkResolver.class); + assertRestTemplateWellConfigured(context); + }); } @Test void restTemplateWellConfiguredWhenUsingPrivateKeyJwtMethod() { webApplicationContextRunner() - .withPropertyValues( - "spring.cloud.azure.active-directory.enabled=true", - "spring.cloud.azure.active-directory.credential.client-certificate-path=/test/test.pfx", - "spring.cloud.azure.active-directory.credential.client-certificate-password=test", - "spring.cloud.azure.active-directory.authorization-clients.graph.client-authentication-method=private_key_jwt", - "spring.cloud.azure.active-directory.authorization-clients.graph.scopes=https://graph.microsoft.com/User.Read", - "spring.cloud.azure.active-directory.authorization-clients.graph.scopes=api://52261059-e515-488e-84fd-a09a3f372814/File.Read" - ) - .withUserConfiguration(AadOAuth2ClientConfiguration.class, RestTemplateProxyCustomizerTestConfiguration.class) - .run(context -> { - assertThat(context).hasSingleBean(OAuth2ClientAuthenticationJwkResolver.class); - assertRestTemplateWellConfigured(context); - }); + .withPropertyValues( + "spring.cloud.azure.active-directory.enabled=true", + "spring.cloud.azure.active-directory.credential.client-certificate-path=/test/test.pfx", + "spring.cloud.azure.active-directory.credential.client-certificate-password=test", + "spring.cloud.azure.active-directory.authorization-clients.graph.client-authentication-method=private_key_jwt", + "spring.cloud.azure.active-directory.authorization-clients.graph.scopes=https://graph.microsoft.com/User.Read", + "spring.cloud.azure.active-directory.authorization-clients.graph.scopes=api://52261059-e515-488e-84fd-a09a3f372814/File.Read" + ) + .withUserConfiguration(AadOAuth2ClientConfiguration.class, RestTemplateProxyCustomizerTestConfiguration.class) + .run(context -> { + assertThat(context).hasSingleBean(OAuth2ClientAuthenticationJwkResolver.class); + assertRestTemplateWellConfigured(context); + }); } @SuppressWarnings("unchecked") private MultiValueMap convertParameters(JwtBearerOAuth2AuthorizedClientProvider jwtBearerProvider, ClientRegistrationRepository clientRepository) { OAuth2AccessTokenResponseClient client = - (OAuth2AccessTokenResponseClient) ReflectionTestUtils.getField(jwtBearerProvider, "accessTokenResponseClient"); + (OAuth2AccessTokenResponseClient) ReflectionTestUtils.getField(jwtBearerProvider, "accessTokenResponseClient"); assertThat(client.getClass().getSimpleName()).isEqualTo(DefaultJwtBearerTokenResponseClient.class.getSimpleName()); JwtBearerGrantRequestEntityConverter requestEntityConverter = - (JwtBearerGrantRequestEntityConverter) ReflectionTestUtils.getField(client, "requestEntityConverter"); + (JwtBearerGrantRequestEntityConverter) ReflectionTestUtils.getField(client, "requestEntityConverter"); assertThat(requestEntityConverter.getClass().getSimpleName()).isEqualTo(AadJwtBearerGrantRequestEntityConverter.class.getSimpleName()); Converter> parametersConverter = - (Converter>) ReflectionTestUtils.getField(requestEntityConverter, "parametersConverter"); + (Converter>) ReflectionTestUtils.getField(requestEntityConverter, "parametersConverter"); JwtBearerGrantRequest request = new JwtBearerGrantRequest(clientRepository.findByRegistrationId("graph"), mock(Jwt.class)); return parametersConverter.convert(request); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadResourceServerConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadResourceServerConfigurationTests.java new file mode 100644 index 000000000000..6b42d5fd24b0 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadResourceServerConfigurationTests.java @@ -0,0 +1,214 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadResourceServerHttpSecurityConfigurer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.nimbusds.jwt.proc.JWTClaimsSetAwareJWSKeySelector; +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener; +import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; +import org.springframework.boot.logging.LogLevel; +import org.springframework.boot.test.context.FilteredClassLoader; +import org.springframework.boot.test.context.runner.WebApplicationContextRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.core.convert.converter.Converter; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.oauth2.client.registration.ClientRegistration; +import org.springframework.security.oauth2.core.OAuth2TokenValidator; +import org.springframework.security.oauth2.jwt.Jwt; +import org.springframework.security.oauth2.jwt.JwtDecoder; +import org.springframework.security.oauth2.jwt.NimbusJwtDecoder; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.web.authentication.BearerTokenAuthenticationFilter; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.test.util.ReflectionTestUtils; + +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.withResourceServerPropertyValues; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadResourceServerHttpSecurityConfigurer.aadResourceServer; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; + +class AadResourceServerConfigurationTests { + + @Test + void testNotExistBearerTokenAuthenticationToken() { + resourceServerContextRunner() + .withClassLoader(new FilteredClassLoader(BearerTokenAuthenticationToken.class)) + .run(context -> assertThrows(IllegalStateException.class, + () -> context.getBean(JWTClaimsSetAwareJWSKeySelector.class))); + } + + @Test + void testCreateJwtDecoderByJwkKeySetUri() { + resourceServerContextRunner() + .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") + .run(context -> { + final JwtDecoder jwtDecoder = context.getBean(JwtDecoder.class); + assertThat(jwtDecoder).isNotNull(); + assertThat(jwtDecoder).isExactlyInstanceOf(NimbusJwtDecoder.class); + }); + } + + @Test + void testNotAudienceDefaultValidator() { + resourceServerContextRunner() + .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") + .run(context -> { + AadAuthenticationProperties properties = context.getBean(AadAuthenticationProperties.class); + AadResourceServerConfiguration bean = context + .getBean(AadResourceServerConfiguration.class); + List> defaultValidator = bean.createDefaultValidator(properties); + assertThat(defaultValidator).isNotNull(); + assertThat(defaultValidator).hasSize(3); + }); + } + + @Test + void testExistAudienceDefaultValidator() { + resourceServerContextRunner() + .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") + .run(context -> { + AadAuthenticationProperties properties = context.getBean(AadAuthenticationProperties.class); + AadResourceServerConfiguration bean = context + .getBean(AadResourceServerConfiguration.class); + List> defaultValidator = bean.createDefaultValidator(properties); + assertThat(defaultValidator).isNotNull(); + assertThat(defaultValidator).hasSize(3); + }); + } + + @Test + void testResourceServerHttpSecurityConfigured() { + resourceServerContextRunner() + .withPropertyValues("spring.cloud.azure.active-directory.enabled=true") + .run(context -> { + SecurityFilterChain filterChain = context.getBean(SecurityFilterChain.class); + assertThat(filterChain).isNotNull(); + assertEquals(1, + filterChain.getFilters() + .stream() + .filter(filter -> filter.getClass().equals(BearerTokenAuthenticationFilter.class)) + .count()); + }); + } + + @Test + @SuppressWarnings({"unchecked", "rawtypes"}) + void useCustomJwtGrantedAuthoritiesConverter() { + new WebApplicationContextRunner() + .withConfiguration(AutoConfigurations.of( + HttpMessageConvertersAutoConfiguration.class, + RestTemplateAutoConfiguration.class)) + .withUserConfiguration( + AzureGlobalPropertiesAutoConfiguration.class, + TestAadResourceServerConfiguration.class, + AadAutoConfiguration.class) + .withPropertyValues(withResourceServerPropertyValues()) + .withClassLoader(new FilteredClassLoader(ClientRegistration.class)) + .run(context -> { + SecurityFilterChain filterChain = context.getBean(SecurityFilterChain.class); + assertThat(filterChain).isNotNull(); + TestAadResourceServerConfiguration resourceServerConfiguration = context.getBean(TestAadResourceServerConfiguration.class); + assertThat(resourceServerConfiguration).isNotNull(); + + TestJwtGrantedAuthoritiesConverter authoritiesConverter = context.getBean(TestJwtGrantedAuthoritiesConverter.class); + assertThat(authoritiesConverter).isNotNull(); + + LinkedHashMap configurers = (LinkedHashMap) ReflectionTestUtils.getField(resourceServerConfiguration.getSavedResourceServerHttpSecurity(), "configurers"); + AadResourceServerHttpSecurityConfigurer resourceServerConfigurer = + (AadResourceServerHttpSecurityConfigurer) configurers.entrySet() + .stream() + .filter(entry -> entry.getKey().equals(AadResourceServerHttpSecurityConfigurer.class)) + .map(Map.Entry::getValue) + .flatMap(list -> list.stream()) + .findFirst() + .orElse(null); + assertThat(resourceServerConfigurer).isNotNull(); + + Converter> jwtGrantedAuthorityConverter = + (Converter>) ReflectionTestUtils.getField(resourceServerConfigurer, "jwtGrantedAuthoritiesConverter"); + assertThat(jwtGrantedAuthorityConverter).isNotNull(); + assertThat(jwtGrantedAuthorityConverter).isEqualTo(authoritiesConverter); + }); + } + + @Test + void useDefaultWebSecurityConfigurerAdapter() { + resourceServerRunner() + .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", + "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" + ) + .run(context -> { + assertThat(context).hasSingleBean(SecurityFilterChain.class); + assertThat(context).hasBean("defaultAadResourceServerFilterChain"); + }); + } + + @Test + void useCustomSecurityFilterChain() { + new WebApplicationContextRunner() + .withConfiguration(AutoConfigurations.of( + HttpMessageConvertersAutoConfiguration.class, + RestTemplateAutoConfiguration.class)) + .withUserConfiguration(AzureGlobalPropertiesAutoConfiguration.class, + TestAadResourceServerConfiguration.class, + AadAutoConfiguration.class) + .withInitializer(ConditionEvaluationReportLoggingListener.forLogLevel(LogLevel.INFO)) + .withClassLoader(new FilteredClassLoader(ClientRegistration.class)) + .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", + "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" + ) + .run(context -> { + assertThat(context).hasSingleBean(SecurityFilterChain.class); + assertThat(context).hasBean("testAadResourceServerFilterChain"); + }); + } + + @EnableWebSecurity + @EnableMethodSecurity + static class TestAadResourceServerConfiguration { + + private HttpSecurity savedResourceServerHttpSecurity; + + @Bean + SecurityFilterChain testAadResourceServerFilterChain(HttpSecurity http, + TestJwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter) throws Exception { + http.apply(aadResourceServer() + .jwtGrantedAuthoritiesConverter(jwtGrantedAuthoritiesConverter)); + savedResourceServerHttpSecurity = http; + return http.build(); + } + + @Bean + TestJwtGrantedAuthoritiesConverter jwtGrantedAuthoritiesConverter() { + return mock(TestJwtGrantedAuthoritiesConverter.class); + } + + HttpSecurity getSavedResourceServerHttpSecurity() { + return savedResourceServerHttpSecurity; + } + } + + class TestJwtGrantedAuthoritiesConverter implements Converter> { + @Override + public Collection convert(Jwt source) { + return null; + } + } +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadWebApplicationConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadWebApplicationConfigurationTests.java similarity index 52% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadWebApplicationConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadWebApplicationConfigurationTests.java index ec0cbb130f06..2d33ab505ac2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/configuration/AadWebApplicationConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AadWebApplicationConfigurationTests.java @@ -1,11 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.configuration; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; -import com.azure.spring.cloud.autoconfigure.aad.AadAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.AadWebSecurityConfigurerAdapter; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; @@ -17,36 +15,21 @@ import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.SecurityFilterChain; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.webApplicationContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.webApplicationContextRunner; import static org.assertj.core.api.Assertions.assertThat; class AadWebApplicationConfigurationTests { @Test - void useDefaultWebSecurityConfigurerAdapter() { + void useDefaultSecurityFilterChain() { webApplicationContextRunner() .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" ) .run(context -> { - assertThat(context).hasSingleBean(AadWebSecurityConfigurerAdapter.class); - assertThat(context).hasSingleBean(AadWebApplicationConfiguration.DefaultAadWebSecurityConfigurerAdapter.class); - }); - } - - @Test - void useCustomWebSecurityConfigurerAdapter() { - webApplicationContextRunner() - .withUserConfiguration(TestAadWebSecurityConfigurerAdapter.class) - .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", - "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" - ) - .run(context -> { - assertThat(context).hasSingleBean(WebSecurityConfigurerAdapter.class); - assertThat(context).doesNotHaveBean(AadWebApplicationConfiguration.DefaultAadWebSecurityConfigurerAdapter.class); - assertThat(context).hasSingleBean(TestAadWebSecurityConfigurerAdapter.class); + assertThat(context).hasSingleBean(SecurityFilterChain.class); + assertThat(context).hasBean("defaultAadWebApplicationFilterChain"); }); } @@ -57,30 +40,18 @@ void useCustomSecurityFilterChain() { HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) .withUserConfiguration(AzureGlobalPropertiesAutoConfiguration.class, - AadResourceServerConfigurationTests.TestSecurityFilterChain.class, + TestSecurityFilterChain.class, AadAutoConfiguration.class) - .withInitializer(new ConditionEvaluationReportLoggingListener(LogLevel.INFO)) + .withInitializer(ConditionEvaluationReportLoggingListener.forLogLevel(LogLevel.INFO)) .withPropertyValues("spring.cloud.azure.active-directory.enabled=true", "spring.cloud.azure.active-directory.credential.client-id=fake-client-id" ) .run(context -> { assertThat(context).hasSingleBean(SecurityFilterChain.class); - assertThat(context).doesNotHaveBean(WebSecurityConfigurerAdapter.class); - assertThat(context).doesNotHaveBean(AadWebApplicationConfiguration.DefaultAadWebSecurityConfigurerAdapter.class); assertThat(context).hasBean("testSecurityFilterChain"); }); } - @EnableWebSecurity - static class TestAadWebSecurityConfigurerAdapter extends - AadWebSecurityConfigurerAdapter { - - @Override - protected void configure(HttpSecurity http) throws Exception { - super.configure(http); - } - } - @EnableWebSecurity static class TestSecurityFilterChain { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AzureAuthenticationFilterTestConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AzureAuthenticationFilterTestConfiguration.java new file mode 100644 index 000000000000..0b4b4507125a --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/AzureAuthenticationFilterTestConfiguration.java @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; + +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({ AadPropertiesConfiguration.class, AzureGlobalPropertiesAutoConfiguration.class }) +public class AzureAuthenticationFilterTestConfiguration { +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/RestTemplateProxyCustomizerTestConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/RestTemplateProxyCustomizerTestConfiguration.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/RestTemplateProxyCustomizerTestConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/RestTemplateProxyCustomizerTestConfiguration.java index 58319b6ab7aa..abe271cf31a3 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/RestTemplateProxyCustomizerTestConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/RestTemplateProxyCustomizerTestConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration; import org.springframework.boot.web.client.RestTemplateCustomizer; import org.springframework.context.annotation.Bean; @@ -18,7 +18,7 @@ public class RestTemplateProxyCustomizerTestConfiguration { public static final SimpleClientHttpRequestFactory FACTORY = createProxyFactory(); @Bean - public RestTemplateCustomizer proxyRestTemplateCustomizer() { + RestTemplateCustomizer proxyRestTemplateCustomizer() { return (RestTemplate restTemplate) -> restTemplate.setRequestFactory(FACTORY); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/AbstractCondition.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/AbstractCondition.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/AbstractCondition.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/AbstractCondition.java index ad02d35db14e..f13ec92fc91e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/AbstractCondition.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/AbstractCondition.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientCertificatePropertiesConditionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientCertificatePropertiesConditionTests.java similarity index 85% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientCertificatePropertiesConditionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientCertificatePropertiesConditionTests.java index 54c1f956247b..4650dc0b5671 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientCertificatePropertiesConditionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientCertificatePropertiesConditionTests.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; -public class ClientCertificatePropertiesConditionTests extends AbstractCondition { +class ClientCertificatePropertiesConditionTests extends AbstractCondition { @Test void match() { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientRegistrationConditionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientRegistrationConditionTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientRegistrationConditionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientRegistrationConditionTests.java index 9fe28df24106..368f65e3ef68 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ClientRegistrationConditionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ClientRegistrationConditionTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; class ClientRegistrationConditionTests extends AbstractCondition { @@ -20,7 +20,7 @@ void testClientConditionWhenApplicationTypeIsEmpty() { .withUserConfiguration(ClientRegistrationConditionConfig.class) .run(assertConditionMatch(true)); } - + @Test void testClientConditionWhenNoOAuth2ClientDependency() { this.contextRunner diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ResourceServerConditionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ResourceServerConditionTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ResourceServerConditionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ResourceServerConditionTests.java index a31812038ddf..af83bb6695c2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/ResourceServerConditionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/ResourceServerConditionTests.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; class ResourceServerConditionTests extends AbstractCondition { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/WebApplicationConditionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/WebApplicationConditionTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/WebApplicationConditionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/WebApplicationConditionTests.java index a6f9e155e947..a5073d1836c8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/conditions/WebApplicationConditionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/conditions/WebApplicationConditionTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.conditions; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.conditions; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.security.oauth2.client.registration.ClientRegistration; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; class WebApplicationConditionTests extends AbstractCondition { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/core/AadApplicationTypeTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadApplicationTypeTests.java similarity index 72% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/core/AadApplicationTypeTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadApplicationTypeTests.java index 2d103fe6f721..8dfd494c3501 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/core/AadApplicationTypeTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadApplicationTypeTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.core; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -9,12 +9,12 @@ import org.mockito.Mockito; import org.springframework.util.ClassUtils; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.RESOURCE_SERVER_WITH_OBO; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.SPRING_SECURITY_OAUTH2_CLIENT_CLASS_NAME; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.SPRING_SECURITY_OAUTH2_RESOURCE_SERVER_CLASS_NAME; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.WEB_APPLICATION; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType.inferApplicationTypeByDependencies; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.RESOURCE_SERVER_WITH_OBO; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.SPRING_SECURITY_OAUTH2_CLIENT_CLASS_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.SPRING_SECURITY_OAUTH2_RESOURCE_SERVER_CLASS_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.WEB_APPLICATION; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadApplicationType.inferApplicationTypeByDependencies; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.Mockito.mockStatic; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthenticationPropertiesTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadAuthenticationPropertiesTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthenticationPropertiesTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadAuthenticationPropertiesTests.java index 97512850021a..72e8f955584b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/properties/AadAuthenticationPropertiesTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadAuthenticationPropertiesTests.java @@ -1,20 +1,21 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.properties; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.AadJwtEncoder; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt.AadJwtEncoder; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AuthorizationClientProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import java.util.Arrays; import java.util.Map; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.oauthClientRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerWithOboContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.webApplicationContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.oauthClientRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerWithOboContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.webApplicationContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -455,7 +456,7 @@ void setDefaultValueFromAzureGlobalPropertiesTest() { } @Test - public void constructorWhenJwkSourceNullThenThrowIllegalArgumentException() { + void constructorWhenJwkSourceNullThenThrowIllegalArgumentException() { assertThatIllegalArgumentException().isThrownBy(() -> new AadJwtEncoder(null)) .withMessage("jwkSource cannot be null"); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadResourceServerPropertiesTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadResourceServerPropertiesTests.java similarity index 78% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadResourceServerPropertiesTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadResourceServerPropertiesTests.java index 4f3a20f6ad7c..cdc3c8787706 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadResourceServerPropertiesTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/configuration/properties/AadResourceServerPropertiesTests.java @@ -1,13 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi; +package com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; import org.junit.jupiter.api.Test; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties.DEFAULT_CLAIM_TO_AUTHORITY_PREFIX_MAP; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadResourceServerProperties.DEFAULT_CLAIM_TO_AUTHORITY_PREFIX_MAP; import static org.junit.jupiter.api.Assertions.assertEquals; class AadResourceServerPropertiesTests { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAppRoleAuthenticationFilterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAppRoleAuthenticationFilterTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAppRoleAuthenticationFilterTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAppRoleAuthenticationFilterTests.java index f737e4df6430..a140b897ba7a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAppRoleAuthenticationFilterTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAppRoleAuthenticationFilterTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.JWSAlgorithm; @@ -11,6 +11,10 @@ import com.nimbusds.jose.proc.BadJOSEException; import com.nimbusds.jwt.JWTClaimsSet; import com.nimbusds.jwt.proc.BadJWTException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import net.minidev.json.JSONArray; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; @@ -22,10 +26,6 @@ import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; import java.util.Collection; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilterPropertiesTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilterPropertiesTests.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilterPropertiesTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilterPropertiesTests.java index b38354fbb500..cd8143d15a16 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilterPropertiesTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilterPropertiesTests.java @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.configuration.AadPropertiesConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.AzureAuthenticationFilterTestConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.springframework.boot.context.properties.ConfigurationPropertiesBindException; import org.springframework.boot.context.properties.bind.validation.BindValidationException; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; import org.springframework.validation.ObjectError; import java.util.Arrays; @@ -33,7 +30,7 @@ public class AadAuthenticationFilterPropertiesTests { public void canSetProperties() { try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) { configureAllRequiredProperties(context); - context.register(Config.class); + context.register(AzureAuthenticationFilterTestConfiguration.class); context.refresh(); final AadAuthenticationProperties properties = context.getBean(AadAuthenticationProperties.class); @@ -70,7 +67,7 @@ public void emptySettingsNotAllowed() { try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) { Exception exception = null; - context.register(Config.class); + context.register(AzureAuthenticationFilterTestConfiguration.class); try { context.refresh(); @@ -103,9 +100,6 @@ public void emptySettingsNotAllowed() { } } - @Configuration - @Import({ AadPropertiesConfiguration.class, AzureGlobalPropertiesAutoConfiguration.class }) - static class Config { - } + } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilterTests.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilterTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilterTests.java index 028453797d61..26382c1c8ba8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/AadAuthenticationFilterTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadAuthenticationFilterTests.java @@ -1,16 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; - -import com.azure.spring.cloud.autoconfigure.aad.AadAuthenticationFilterAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadCredentialProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadProfileProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; + +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.AadAuthenticationFilterAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadCredentialProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadProfileProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.proc.BadJOSEException; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -23,10 +27,6 @@ import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.ParseException; import java.util.Map; @@ -39,7 +39,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -public class AadAuthenticationFilterTests { +class AadAuthenticationFilterTests { private static final String TOKEN = "dummy-token"; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of( @@ -52,7 +52,7 @@ public class AadAuthenticationFilterTests { private final HttpServletResponse response; private final AadAuthenticationFilter filter; - public AadAuthenticationFilterTests() { + AadAuthenticationFilterTests() { userPrincipalManager = mock(UserPrincipalManager.class); request = mock(HttpServletRequest.class); response = mock(HttpServletResponse.class); @@ -70,7 +70,7 @@ public AadAuthenticationFilterTests() { //TODO (Zhou Liu): current test case is out of date, a new test case need to cover here, do it later. @Test @Disabled - public void doFilterInternal() { + void doFilterInternal() { this.contextRunner.withPropertyValues("spring.cloud.azure.active-directory.credential.client-id", TestConstants.CLIENT_ID) .withPropertyValues("spring.cloud.azure.active-directory.credential.client-secret", TestConstants.CLIENT_SECRET) .withPropertyValues("spring.cloud.azure.active-directory.credential.client-secret", @@ -113,7 +113,7 @@ public void doFilterInternal() { } @Test - public void testTokenNotIssuedByAAD() throws ServletException, IOException { + void testTokenNotIssuedByAAD() throws ServletException, IOException { when(userPrincipalManager.isTokenIssuedByAad(TOKEN)).thenReturn(false); final FilterChain filterChain = (request, response) -> { @@ -127,7 +127,7 @@ public void testTokenNotIssuedByAAD() throws ServletException, IOException { } @Test - public void testAlreadyAuthenticated() throws ServletException, IOException, ParseException, JOSEException, + void testAlreadyAuthenticated() throws ServletException, IOException, ParseException, JOSEException, BadJOSEException { final Authentication authentication = mock(Authentication.class); when(authentication.isAuthenticated()).thenReturn(true); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/AadGraphClientTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadGraphClientTests.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/AadGraphClientTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadGraphClientTests.java index e59ac32fd1bb..c4e7c3c16130 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/AadGraphClientTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/AadGraphClientTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/ResourceRetrieverTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/ResourceRetrieverTests.java similarity index 83% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/ResourceRetrieverTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/ResourceRetrieverTests.java index e98cdef86f99..520e56128bb1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/ResourceRetrieverTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/ResourceRetrieverTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.AadAuthenticationFilterAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.RestOperationsResourceRetriever; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.AadAuthenticationFilterAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jose.RestOperationsResourceRetriever; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.nimbusds.jose.util.ResourceRetriever; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -13,7 +13,7 @@ import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; import static org.assertj.core.api.Assertions.assertThat; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/TestConstants.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/TestConstants.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/TestConstants.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/TestConstants.java index cf26ca27b1d2..ae51b237f6b9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/TestConstants.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/TestConstants.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; import java.util.Arrays; import java.util.List; @@ -20,7 +20,7 @@ public class TestConstants { /** * Token from https://docs.microsoft.com/azure/active-directory/develop/v2-id-and-access-tokens */ - public static final String JWT_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1" + static final String JWT_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1" + "iYTlnb0VLWSJ9.eyJhdWQiOiI2NzMxZGU3Ni0xNGE2LTQ5YWUtOTdiYy02ZWJhNjkxNDM5MWUiLCJpc3MiOiJodHRwczovL2xvZ2lu" + "Lm1pY3Jvc29mdG9ubGluZS5jb20vYjk0MTk4MTgtMDlhZi00OWMyLWIwYzMtNjUzYWRjMWYzNzZlL3YyLjAiLCJpYXQiOjE0NTIyOD" + "UzMzEsIm5iZiI6MTQ1MjI4NTMzMSwiZXhwIjoxNDUyMjg5MjMxLCJuYW1lIjoiQmFiZSBSdXRoIiwibm9uY2UiOiIxMjM0NSIsIm9p" diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalAzureADGraphTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalAzureAdGraphTests.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalAzureADGraphTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalAzureAdGraphTests.java index 1b6b51dcc87a..cb2a2b36506e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalAzureADGraphTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalAzureAdGraphTests.java @@ -1,10 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.filter.TestConstants; -import com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipal; import com.nimbusds.jose.JWSObject; import com.nimbusds.jwt.JWTClaimsSet; import org.junit.jupiter.api.Test; @@ -23,7 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; -class UserPrincipalAzureADGraphTests { +class UserPrincipalAzureAdGraphTests { @Test void userPrincipalIsSerializable() throws ParseException, IOException, ClassNotFoundException { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerAudienceTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManagerAudienceTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerAudienceTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManagerAudienceTests.java index 7384d136e1e3..4fe2c15125d0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerAudienceTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManagerAudienceTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import com.nimbusds.jose.JOSEException; import com.nimbusds.jose.JWSAlgorithm; import com.nimbusds.jose.JWSHeader; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManagerTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManagerTests.java index 7f2feaa60c4d..d26a89273e97 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalManagerTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.JWKSet; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalMicrosoftGraphTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalMicrosoftGraphTests.java index 98024e7579db..b4189a50f2bb 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/filter/UserPrincipalMicrosoftGraphTests.java @@ -1,13 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.filter; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.logging.LogLevel; -import com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipal; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.nimbusds.jose.JWSObject; @@ -79,7 +78,7 @@ class UserPrincipalMicrosoftGraphTests { @BeforeAll void setup() { - accessToken = MicrosoftGraphConstants.BEARER_TOKEN; + accessToken = TestConstants.BEARER_TOKEN; properties = new AadAuthenticationProperties(); properties.getProfile().getEnvironment().setMicrosoftGraphEndpoint(MOCK_MICROSOFT_GRAPH_ENDPOINT); endpoints = new AadAuthorizationServerEndpoints(properties.getProfile().getEnvironment().getActiveDirectoryEndpoint(), properties.getProfile().getTenantId()); @@ -103,7 +102,7 @@ void getGroups() throws Exception { .andExpect(header(AUTHORIZATION, String.format("Bearer %s", accessToken))) .andRespond(withStatus(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(userGroupsJson)); - Set groups = client.getGroups(MicrosoftGraphConstants.BEARER_TOKEN); + Set groups = client.getGroups(TestConstants.BEARER_TOKEN); assertThat(groups) .isNotEmpty() .containsExactlyInAnyOrder("group1", "group2", "group3"); @@ -120,7 +119,7 @@ void userPrincipalIsSerializable() throws ParseException, IOException, ClassNotF FileInputStream fileInputStream = new FileInputStream(tmpOutputFile); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream)) { - final JWSObject jwsObject = JWSObject.parse(MicrosoftGraphConstants.JWT_TOKEN); + final JWSObject jwsObject = JWSObject.parse(TestConstants.JWT_TOKEN); final JWTClaimsSet jwtClaimsSet = new JWTClaimsSet.Builder().subject("fake-subject").build(); final UserPrincipal principal = new UserPrincipal("", jwsObject, jwtClaimsSet); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestJwks.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/jwk/TestJwks.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestJwks.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/jwk/TestJwks.java index 99546b479151..86f879f97c95 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestJwks.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/jwk/TestJwks.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aad.jwk; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.logging.LogLevel; @@ -16,6 +16,7 @@ import java.security.interfaces.RSAPublicKey; public final class TestJwks { + private static final ClientLogger LOGGER = new ClientLogger(TestJwks.class); // @formatter:off @@ -30,6 +31,7 @@ public final class TestJwks { private TestJwks() { } + @SuppressWarnings("deprecation") public static RSAKey.Builder jwk(RSAPublicKey publicKey, RSAPrivateKey privateKey, X509Certificate cert) { // @formatter:off try { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestKeys.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/jwk/TestKeys.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestKeys.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/jwk/TestKeys.java index 53b344c8ef98..36ca6a7a7102 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestKeys.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/jwk/TestKeys.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aad.jwk; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -19,7 +19,7 @@ import java.util.Base64; -public final class TestKeys { +final class TestKeys { public static final KeyFactory KF; static { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAccessTokenGroupRolesExtractionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAccessTokenGroupRolesExtractionTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAccessTokenGroupRolesExtractionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAccessTokenGroupRolesExtractionTests.java index 063709f83033..a487765d93e0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAccessTokenGroupRolesExtractionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAccessTokenGroupRolesExtractionTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.GraphClient; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.GroupInformation; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.GraphClient; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.GroupInformation; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAzureDelegatedOAuth2AuthorizedClientProviderTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAzureDelegatedOAuth2AuthorizedClientProviderTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAzureDelegatedOAuth2AuthorizedClientProviderTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAzureDelegatedOAuth2AuthorizedClientProviderTests.java index 9e316927fe0c..59ed1f4a6f19 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadAzureDelegatedOAuth2AuthorizedClientProviderTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadAzureDelegatedOAuth2AuthorizedClientProviderTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import org.junit.jupiter.api.Test; import org.springframework.security.core.Authentication; @@ -16,8 +16,8 @@ import java.time.Instant; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.AZURE_DELEGATED; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.AZURE_DELEGATED; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadClientRegistrationRepositoryTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadClientRegistrationRepositoryTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadClientRegistrationRepositoryTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadClientRegistrationRepositoryTests.java index 24cb38166638..215659a76ef0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/AadClientRegistrationRepositoryTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadClientRegistrationRepositoryTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.properties.AadAuthorizationServerEndpoints; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; @@ -21,13 +21,13 @@ import java.util.List; import java.util.Set; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.resourceServerCount; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.oauthClientRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.resourceServerWithOboContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.webApplicationAndResourceServerContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils.webApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants.AZURE_DELEGATED; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.oauthClientRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.resourceServerWithOboContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.webApplicationAndResourceServerContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils.webApplicationContextRunner; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.resourceServerCount; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants.AZURE_DELEGATED; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadJwtBearerGrantRequestEntityConverterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadJwtBearerGrantRequestEntityConverterTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java index cea314080a09..ce771c846038 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/AadJwtBearerGrantRequestEntityConverterTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadJwtBearerGrantRequestEntityConverterTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; import org.junit.jupiter.api.Test; import org.springframework.http.RequestEntity; @@ -17,7 +17,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -public class AadJwtBearerGrantRequestEntityConverterTests { +class AadJwtBearerGrantRequestEntityConverterTests { @SuppressWarnings("unchecked") @Test diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests.java similarity index 79% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests.java index 126d019049f0..53400928a42b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests.java @@ -1,10 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.WebApplicationContextRunnerUtils; +import com.azure.spring.cloud.autoconfigure.implementation.aad.WebApplicationContextRunnerUtils; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; @@ -22,7 +21,7 @@ import java.util.Collections; import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -30,20 +29,20 @@ class AadOAuth2AuthorizationCodeGrantRequestEntityConverterTests { private WebApplicationContextRunner getContextRunner() { return WebApplicationContextRunnerUtils - .webApplicationContextRunner() - .withPropertyValues( - "spring.cloud.azure.active-directory.enabled = true", - "spring.cloud.azure.active-directory.base-uri = fake-uri", - "spring.cloud.azure.active-directory.authorization-clients.graph.scopes = Graph.Scope", - "spring.cloud.azure.active-directory.authorization-clients.arm.scopes = Arm.Scope", - "spring.cloud.azure.active-directory.authorization-clients.arm.authorization-grant-type = authorization_code"); + .webApplicationContextRunner() + .withPropertyValues( + "spring.cloud.azure.active-directory.enabled = true", + "spring.cloud.azure.active-directory.base-uri = fake-uri", + "spring.cloud.azure.active-directory.authorization-clients.graph.scopes = Graph.Scope", + "spring.cloud.azure.active-directory.authorization-clients.arm.scopes = Arm.Scope", + "spring.cloud.azure.active-directory.authorization-clients.arm.authorization-grant-type = authorization_code"); } @Test void addScopeForAzureClient() { getContextRunner().run(context -> { AadClientRegistrationRepository repository = - (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); + (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); ClientRegistration azure = repository.findByRegistrationId(AZURE_CLIENT_REGISTRATION_ID); MultiValueMap body = convertedBodyOf(repository, createCodeGrantRequest(azure)); assertEquals("openid profile offline_access", body.getFirst("scope")); @@ -54,7 +53,7 @@ void addScopeForAzureClient() { void addScopeForAuthorizationCodeClient() { getContextRunner().run(context -> { AadClientRegistrationRepository repository = - (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); + (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); ClientRegistration arm = repository.findByRegistrationId("arm"); MultiValueMap body = convertedBodyOf(repository, createCodeGrantRequest(arm)); assertEquals("Arm.Scope openid profile offline_access", body.getFirst("scope")); @@ -82,7 +81,7 @@ void onlyAddScopeOnceEvenConvertMethodExecutedMultipleTimes() { void addHeadersForAzureClient() { getContextRunner().run(context -> { AadClientRegistrationRepository repository = - (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); + (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); ClientRegistration azure = repository.findByRegistrationId(AZURE_CLIENT_REGISTRATION_ID); HttpHeaders httpHeaders = convertedHeaderOf(repository, createCodeGrantRequest(azure)); testHttpHeaders(httpHeaders); @@ -93,7 +92,7 @@ void addHeadersForAzureClient() { void addHeadersForAuthorizationCodeClient() { getContextRunner().run(context -> { AadClientRegistrationRepository repository = - (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); + (AadClientRegistrationRepository) context.getBean(ClientRegistrationRepository.class); ClientRegistration arm = repository.findByRegistrationId("arm"); HttpHeaders httpHeaders = convertedHeaderOf(repository, createCodeGrantRequest(arm)); testHttpHeaders(httpHeaders); @@ -103,11 +102,11 @@ void addHeadersForAuthorizationCodeClient() { private HttpHeaders convertedHeaderOf(AadClientRegistrationRepository repository, OAuth2AuthorizationCodeGrantRequest request) { AadOAuth2AuthorizationCodeGrantRequestEntityConverter converter = - new AadOAuth2AuthorizationCodeGrantRequestEntityConverter(repository.getAzureClientAccessTokenScopes()); + new AadOAuth2AuthorizationCodeGrantRequestEntityConverter(repository.getAzureClientAccessTokenScopes()); RequestEntity entity = converter.convert(request); return Optional.ofNullable(entity) - .map(HttpEntity::getHeaders) - .orElse(null); + .map(HttpEntity::getHeaders) + .orElse(null); } private void testHttpHeaders(HttpHeaders headers) { @@ -121,7 +120,7 @@ private void testHttpHeaders(HttpHeaders headers) { private MultiValueMap convertedBodyOf(AadClientRegistrationRepository repository, OAuth2AuthorizationCodeGrantRequest request) { AadOAuth2AuthorizationCodeGrantRequestEntityConverter converter = - new AadOAuth2AuthorizationCodeGrantRequestEntityConverter(repository.getAzureClientAccessTokenScopes()); + new AadOAuth2AuthorizationCodeGrantRequestEntityConverter(repository.getAzureClientAccessTokenScopes()); RequestEntity entity = converter.convert(request); return WebApplicationContextRunnerUtils.toMultiValueMap(entity); } @@ -132,8 +131,8 @@ private OAuth2AuthorizationCodeGrantRequest createCodeGrantRequest(ClientRegistr private OAuth2AuthorizationExchange createExchange(ClientRegistration client) { return new OAuth2AuthorizationExchange( - createAuthorizationRequest(client), - createAuthorizationResponse()); + createAuthorizationRequest(client), + createAuthorizationResponse()); } private OAuth2AuthorizationRequest createAuthorizationRequest(ClientRegistration client) { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientAuthenticationJwkResolverTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2ClientAuthenticationJwkResolverTests.java similarity index 53% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientAuthenticationJwkResolverTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2ClientAuthenticationJwkResolverTests.java index 10b1f001c281..5e3b90e68141 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/AadOAuth2ClientAuthenticationJwkResolverTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2ClientAuthenticationJwkResolverTests.java @@ -1,21 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.TestJwks; +import com.azure.spring.cloud.autoconfigure.implementation.aad.jwk.TestJwks; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.KeyType; import com.nimbusds.jose.jwk.RSAKey; +import jakarta.xml.bind.DatatypeConverter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.security.oauth2.client.registration.ClientRegistration; -import javax.xml.bind.DatatypeConverter; import java.util.function.Function; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.TestClientRegistrations.clientRegistration; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.ArgumentMatchers.any; @@ -25,7 +24,7 @@ import static org.springframework.security.oauth2.core.ClientAuthenticationMethod.CLIENT_SECRET_JWT; import static org.springframework.security.oauth2.core.ClientAuthenticationMethod.NONE; -public class AadOAuth2ClientAuthenticationJwkResolverTests { +class AadOAuth2ClientAuthenticationJwkResolverTests { private Function jwkFunction; @@ -39,16 +38,46 @@ public void setup() { void resolveJwkFunction() { AadOAuth2ClientAuthenticationJwkResolver jwkResolver = new AadOAuth2ClientAuthenticationJwkResolver("D:\\test\\test.pfx", "test"); - assertNull(jwkResolver.resolve(clientRegistration(JWT_BEARER, CLIENT_SECRET_JWT).build())); - assertNull(jwkResolver.resolve(clientRegistration(JWT_BEARER, NONE).build())); + + ClientRegistration clientRegistration1 = ClientRegistration + .withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .clientAuthenticationMethod(CLIENT_SECRET_JWT) + .authorizationGrantType(JWT_BEARER) + .tokenUri("http://localhost/token") + .build(); + + assertNull(jwkResolver.resolve(clientRegistration1)); + + ClientRegistration clientRegistration2 = ClientRegistration + .withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .clientAuthenticationMethod(NONE) + .authorizationGrantType(JWT_BEARER) + .tokenUri("http://localhost/token") + .build(); + assertNull(jwkResolver.resolve(clientRegistration2)); } + @SuppressWarnings("deprecation") @Test void jwkValue() { RSAKey rsaJwk = Mockito.spy(TestJwks.DEFAULT_RSA_JWK); given(this.jwkFunction.apply(any())).willReturn(rsaJwk); - JWK jwk = jwkFunction.apply(clientRegistration(JWT_BEARER, CLIENT_SECRET_JWT).build()); + + ClientRegistration clientRegistration = ClientRegistration + .withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .clientAuthenticationMethod(CLIENT_SECRET_JWT) + .authorizationGrantType(JWT_BEARER) + .tokenUri("http://localhost/token") + .build(); + + JWK jwk = jwkFunction.apply(clientRegistration); assertEquals("F6A8558E721545972D3B8EE60BA22F913A322601", DatatypeConverter.printHexBinary(jwk.getX509CertThumbprint().decode())); assertEquals(KeyType.RSA, jwk.getKeyType()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadIdTokenRolesExtractionTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserServiceIdTokenRolesExtractionTests.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadIdTokenRolesExtractionTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserServiceIdTokenRolesExtractionTests.java index 56057cde6dc6..1662e257a9c9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadIdTokenRolesExtractionTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserServiceIdTokenRolesExtractionTests.java @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import net.minidev.json.JSONArray; import org.junit.jupiter.api.Test; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -12,12 +12,12 @@ import java.util.HashSet; import java.util.Set; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames.ROLES; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames.ROLES; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -class AadIdTokenRolesExtractionTests { +class AadOAuth2UserServiceIdTokenRolesExtractionTests { private AadOAuth2UserService getUserService() { return new AadOAuth2UserService(mock(AadAuthenticationProperties.class), new RestTemplateBuilder()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2UserServiceTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserServiceTest.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2UserServiceTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserServiceTest.java index b0364f9c8d68..c1a546a43d76 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/AadOAuth2UserServiceTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/AadOAuth2UserServiceTest.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AuthorityPrefix; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.GraphClient; -import com.azure.spring.cloud.autoconfigure.aad.implementation.graph.GroupInformation; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AuthorityPrefix; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.GraphClient; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph.GroupInformation; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.security.core.Authentication; @@ -26,7 +26,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSession; import java.time.Duration; import java.time.Instant; import java.util.Arrays; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/JacksonHttpSessionOAuth2AuthorizedClientRepositoryTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/JacksonHttpSessionOAuth2AuthorizedClientRepositoryTest.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/JacksonHttpSessionOAuth2AuthorizedClientRepositoryTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/JacksonHttpSessionOAuth2AuthorizedClientRepositoryTest.java index 01b51112160d..fe75ee21c911 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/oauth2/JacksonHttpSessionOAuth2AuthorizedClientRepositoryTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/JacksonHttpSessionOAuth2AuthorizedClientRepositoryTest.java @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security; +import jakarta.servlet.http.HttpSession; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.mock.web.MockHttpServletRequest; @@ -13,11 +14,10 @@ import org.springframework.security.oauth2.core.ClientAuthenticationMethod; import org.springframework.security.oauth2.core.OAuth2AccessToken; -import javax.servlet.http.HttpSession; import java.time.Instant; import java.util.Map; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.jackson.SerializerUtils.deserializeOAuth2AuthorizedClientMap; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson.SerializerUtils.deserializeOAuth2AuthorizedClientMap; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GraphClientTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GraphClientTest.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GraphClientTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GraphClientTest.java index f0fcb9994e18..c95911f4e558 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/GraphClientTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/GraphClientTest.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/MembershipTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/MembershipTests.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/MembershipTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/MembershipTests.java index 9458b3a30a87..228755f73a58 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/MembershipTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/graph/MembershipTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.graph; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.graph; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtClientAuthenticationParametersConverterTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtClientAuthenticationParametersConverterTests.java similarity index 69% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtClientAuthenticationParametersConverterTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtClientAuthenticationParametersConverterTests.java index 495c61556e6e..2d12615b1c33 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtClientAuthenticationParametersConverterTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtClientAuthenticationParametersConverterTests.java @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; -import com.azure.spring.cloud.autoconfigure.aad.implementation.TestJwks; +import com.azure.spring.cloud.autoconfigure.implementation.aad.jwk.TestJwks; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadJwtClientAuthenticationParametersConverter; import com.nimbusds.jose.JWSHeader; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.RSAKey; @@ -23,7 +24,6 @@ import java.util.Collections; import java.util.function.Function; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.TestClientRegistrations.clientRegistration; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.junit.jupiter.api.Assertions.assertNull; @@ -35,7 +35,7 @@ import static org.springframework.security.oauth2.core.ClientAuthenticationMethod.CLIENT_SECRET_JWT; import static org.springframework.security.oauth2.core.ClientAuthenticationMethod.PRIVATE_KEY_JWT; -public class AadJwtClientAuthenticationParametersConverterTests { +class AadJwtClientAuthenticationParametersConverterTests { private Function jwkResolver; @@ -50,28 +50,56 @@ public void setup() { @Test void convertNull() { + ClientRegistration clientRegistration = ClientRegistration + .withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .clientAuthenticationMethod(CLIENT_SECRET_JWT) + .authorizationGrantType(CLIENT_CREDENTIALS) + .tokenUri("http://localhost/token") + .build(); + OAuth2ClientCredentialsGrantRequest clientCredentialsGrantRequest = - new OAuth2ClientCredentialsGrantRequest(clientRegistration(CLIENT_CREDENTIALS, CLIENT_SECRET_JWT).build()); + new OAuth2ClientCredentialsGrantRequest(clientRegistration); assertNull(this.converter.convert(clientCredentialsGrantRequest)); } @Test void resolveNullJwkThenThrowOAuth2AuthorizationException() { + ClientRegistration clientRegistration = ClientRegistration + .withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .clientAuthenticationMethod(PRIVATE_KEY_JWT) + .authorizationGrantType(CLIENT_CREDENTIALS) + .tokenUri("http://localhost/token") + .build(); + OAuth2ClientCredentialsGrantRequest clientCredentialsGrantRequest = - new OAuth2ClientCredentialsGrantRequest(clientRegistration(CLIENT_CREDENTIALS, PRIVATE_KEY_JWT).build()); + new OAuth2ClientCredentialsGrantRequest(clientRegistration); assertThatExceptionOfType(OAuth2AuthorizationException.class) .isThrownBy(() -> this.converter.convert(clientCredentialsGrantRequest)) .withMessage("[invalid_key] Failed to resolve JWK signing key for client registration 'test'."); } @Test + @SuppressWarnings("deprecation") void testAssertion() throws ParseException { RSAKey rsaJwk = spy(TestJwks.DEFAULT_RSA_JWK); given(this.jwkResolver.apply(any())).willReturn(rsaJwk); given(rsaJwk.getX509CertThumbprint()).willReturn(new Base64URL("dGVzdA")); - ClientRegistration registration = clientRegistration(CLIENT_CREDENTIALS, PRIVATE_KEY_JWT).build(); + + ClientRegistration clientRegistration = ClientRegistration + .withRegistrationId("test") + .clientId("test") + .clientSecret("test-secret") + .clientAuthenticationMethod(PRIVATE_KEY_JWT) + .authorizationGrantType(CLIENT_CREDENTIALS) + .tokenUri("http://localhost/token") + .build(); + OAuth2ClientCredentialsGrantRequest clientCredentialsGrantRequest = - new OAuth2ClientCredentialsGrantRequest(registration); + new OAuth2ClientCredentialsGrantRequest(clientRegistration); MultiValueMap parameters = this.converter.convert(clientCredentialsGrantRequest); assertThat(parameters.getFirst(OAuth2ParameterNames.CLIENT_ASSERTION_TYPE)) @@ -83,10 +111,10 @@ void testAssertion() throws ParseException { JWSHeader header = (JWSHeader) jwt.getHeader(); assertThat(header.getAlgorithm().getName()).isEqualTo(SignatureAlgorithm.RS256.getName()); - assertThat(jwt.getJWTClaimsSet().getIssuer().equals(registration.getClientId())); - assertThat(jwt.getJWTClaimsSet().getSubject()).isEqualTo(registration.getClientId()); + assertThat(jwt.getJWTClaimsSet().getIssuer().equals(clientRegistration.getClientId())); + assertThat(jwt.getJWTClaimsSet().getSubject()).isEqualTo(clientRegistration.getClientId()); assertThat(jwt.getJWTClaimsSet().getAudience()) - .isEqualTo(Collections.singletonList(registration.getProviderDetails().getTokenUri())); + .isEqualTo(Collections.singletonList(clientRegistration.getProviderDetails().getTokenUri())); assertThat(jwt.getJWTClaimsSet().getJWTID()).isNotNull(); assertThat(jwt.getJWTClaimsSet().getIssueTime()).isNotNull(); assertThat(jwt.getJWTClaimsSet().getExpirationTime()).isNotNull(); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtEncoderTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtEncoderTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtEncoderTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtEncoderTests.java index 0855de81ecf8..86fa1e90e4a9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/jwt/AadJwtEncoderTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtEncoderTests.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.jwt; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; -import com.azure.spring.cloud.autoconfigure.aad.implementation.TestJwtClaimsSets; import com.nimbusds.jose.KeySourceException; import com.nimbusds.jose.jwk.JWK; import com.nimbusds.jose.jwk.JWKSet; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/validator/AadJwtIssuerValidatorTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtIssuerValidatorTests.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/validator/AadJwtIssuerValidatorTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtIssuerValidatorTests.java index a3ae72d0a4c2..668958075e3e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapi/validator/AadJwtIssuerValidatorTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/AadJwtIssuerValidatorTests.java @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapi.validator; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; -import com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.AadJwtClaimNames; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties; -import com.azure.spring.cloud.autoconfigure.aad.properties.AadProfileProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadAuthenticationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.properties.AadProfileProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.AadJwtClaimNames; import org.junit.jupiter.api.Test; import org.springframework.security.oauth2.core.OAuth2TokenValidatorResult; import org.springframework.security.oauth2.jwt.Jwt; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestJwtClaimsSets.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/TestJwtClaimsSets.java similarity index 81% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestJwtClaimsSets.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/TestJwtClaimsSets.java index e48a36d9372d..69ecd5d498d8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/TestJwtClaimsSets.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/security/jwt/TestJwtClaimsSets.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt; import org.springframework.security.oauth2.jwt.JwtClaimNames; @@ -12,13 +12,9 @@ import java.util.Map; import java.util.UUID; -public final class TestJwtClaimsSets { +final class TestJwtClaimsSets { - private TestJwtClaimsSets() { - - } - - public static Map jwtClaimsSet() { + static Map jwtClaimsSet() { Map jwtClaimsSet = new HashMap<>(); Instant issuedAt = Instant.now(); Instant expiresAt = issuedAt.plus(Duration.ofSeconds(60L)); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/SerializerUtilsTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/SerializerUtilsTests.java similarity index 86% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/SerializerUtilsTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/SerializerUtilsTests.java index 00bbdafcddec..24922993cabb 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/webapp/SerializerUtilsTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/serde/jackson/SerializerUtilsTests.java @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation.webapp; +package com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson; -import com.azure.spring.cloud.autoconfigure.aad.implementation.constants.Constants; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.constants.Constants; import org.junit.jupiter.api.Test; import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; import org.springframework.security.oauth2.client.registration.ClientRegistration; @@ -14,9 +14,9 @@ import java.util.Map; import java.util.logging.Logger; -import static com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.jackson.SerializerUtils.deserializeOAuth2AuthorizedClientMap; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.jackson.SerializerUtils.serializeOAuth2AuthorizedClientMap; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.security.AadClientRegistrationRepository.AZURE_CLIENT_REGISTRATION_ID; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson.SerializerUtils.deserializeOAuth2AuthorizedClientMap; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.serde.jackson.SerializerUtils.serializeOAuth2AuthorizedClientMap; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; import static org.springframework.security.oauth2.core.AuthorizationGrantType.CLIENT_CREDENTIALS; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/AadRestTemplateCreatorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/utils/AadRestTemplateCreatorTest.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/AadRestTemplateCreatorTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/utils/AadRestTemplateCreatorTest.java index 98dcaeea9a12..01fa87d77254 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/AadRestTemplateCreatorTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aad/utils/AadRestTemplateCreatorTest.java @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aad.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aad.utils; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.RestTemplateProxyCustomizerTestConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -29,9 +30,9 @@ import java.nio.file.Paths; import java.util.List; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.AadRestTemplateCreator.createOAuth2ErrorResponseHandledRestTemplate; -import static com.azure.spring.cloud.autoconfigure.aad.implementation.RestTemplateProxyCustomizerTestConfiguration.FACTORY; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.RestTemplateProxyCustomizerTestConfiguration.FACTORY; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createOAuth2AccessTokenResponseClientRestTemplate; +import static com.azure.spring.cloud.autoconfigure.implementation.aad.utils.AadRestTemplateCreator.createOAuth2ErrorResponseHandledRestTemplate; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.isA; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/AadB2cConstants.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/AadB2cConstants.java new file mode 100644 index 000000000000..6e795dcf2c33 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/AadB2cConstants.java @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c; + + +import static com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties.PREFIX; + +public class AadB2cConstants { + public static final String AUTHENTICATE_ADDITIONAL_PARAMETERS_LOGIN_HINT = ".authenticate-additional-parameters" + + ".login-hint"; + + public static final String AUTHENTICATE_ADDITIONAL_PARAMETERS_PROMPT = ".authenticate-additional-parameters.prompt"; + + public static final String PROMPT = "prompt"; + + public static final String LOGIN_HINT = "login-hint"; + + public static final Object TEST_PROMPT = "fake-prompt"; + + public static final String TEST_LOGIN_HINT = "fake-login-hint"; + + public static final String TEST_BASE_URI = "https://faketenant.b2clogin.com/faketenant.onmicrosoft.com/"; + + public static final String TEST_CLIENT_ID = "fake-client-id"; + + public static final String TEST_TENANT_ID = "fake-tenant-id"; + + public static final String TEST_CLIENT_SECRET = "fake-client-secret"; + public static final String TEST_APP_ID_URI = "https://fake-tenant.onmicrosoft.com/custom"; + + public static final String TEST_KEY_SIGN_UP_OR_IN = "sign-up-or-sign-in"; + public static final String TEST_SIGN_UP_OR_IN_NAME = "fake-sign-in-or-up"; + + public static final Object TEST_KEY_SIGN_IN = "sign-in"; + public static final Object TEST_SIGN_IN_NAME = "fake-sign-in"; + + public static final Object TEST_KEY_SIGN_UP = "sign-up"; + public static final Object TEST_SIGN_UP_NAME = "fake-sign-up"; + + public static final String TEST_KEY_PROFILE_EDIT = "profile-edit"; + public static final String TEST_PROFILE_EDIT_NAME = "profile_edit"; + + public static final String TEST_LOGOUT_SUCCESS_URL = "https://fake-logout-success-url"; + + public static final String TEST_CLIENT_CREDENTIAL_SCOPES = "https://fake-tenant.onmicrosoft.com/other/.default"; + public static final String TEST_CLIENT_CREDENTIAL_GRANT_TYPE = "client_credentials"; + + public static final String CLIENT_CREDENTIAL_NAME = "webApiA"; + + public static final String BASE_URI = String.format("%s.%s", PREFIX, "base-uri"); + + public static final String TEST_ATTRIBUTE_NAME = String.format("%s.%s", PREFIX, "name"); + + public static final String USER_NAME_ATTRIBUTE_NAME = String.format("%s.%s", PREFIX, "user-name-attribute-name"); + + public static final String CLIENT_ID = String.format("%s.%s", PREFIX, "credential.client-id"); + + public static final String TENANT_ID = String.format("%s.%s", PREFIX, "profile.tenant-id"); + + public static final String CLIENT_SECRET = String.format("%s.%s", PREFIX, "credential.client-secret"); + public static final String APP_ID_URI = String.format("%s.%s", PREFIX, "app-id-uri"); + + public static final String LOGOUT_SUCCESS_URL = String.format("%s.%s", PREFIX, "logout-success-url"); + + public static final String LOGIN_FLOW = String.format("%s.%s", PREFIX, "login-flow"); + + public static final String USER_FLOWS = String.format("%s.%s", PREFIX, "user-flows"); + + public static final Object CONFIG_PROMPT = String.format("%s.%s", PREFIX, + AUTHENTICATE_ADDITIONAL_PARAMETERS_PROMPT); + + public static final String CONFIG_LOGIN_HINT = String.format("%s.%s", PREFIX, + AUTHENTICATE_ADDITIONAL_PARAMETERS_LOGIN_HINT); + + public static final String AUTHORIZATION_CLIENTS = String.format("%s.%s", PREFIX, "authorization-clients"); +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cAutoConfigurationTests.java similarity index 85% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cAutoConfigurationTests.java index a576abec8bd9..276971b3bd74 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cAutoConfigurationTests.java @@ -1,17 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; -import com.azure.spring.cloud.autoconfigure.aad.RestTemplateTestUtil; -import com.azure.spring.cloud.autoconfigure.aad.implementation.RestTemplateProxyCustomizerTestConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAuthorizationRequestResolver; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cLogoutSuccessHandler; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cOidcLoginConfigurer; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cResourceServerAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AuthorizationClientProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.AadB2cConstants; +import com.azure.spring.cloud.autoconfigure.implementation.aad.RestTemplateTestUtil; +import com.azure.spring.cloud.autoconfigure.implementation.aad.configuration.RestTemplateProxyCustomizerTestConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.conditions.AadB2cConditions; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AuthorizationClientProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.AadB2cAuthorizationRequestResolver; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.AadB2cLogoutSuccessHandler; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.AadB2cOidcLoginConfigurer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; @@ -22,11 +22,12 @@ import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; +import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.oauth2.core.AuthorizationGrantType; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; +import org.springframework.security.web.SecurityFilterChain; import java.util.Arrays; import java.util.HashSet; @@ -68,7 +69,7 @@ void mapPropertiesSetting() { assertEquals(authenticateAdditionalParameters.size(), 2); assertTrue(authenticateAdditionalParameters.containsKey("login-hint")); assertTrue(authenticateAdditionalParameters.containsKey("prompt")); - assertEquals(authenticateAdditionalParameters.get("login-hint"), AadB2cConstants.TEST_LOGIN_HINT); + Assertions.assertEquals(authenticateAdditionalParameters.get("login-hint"), AadB2cConstants.TEST_LOGIN_HINT); assertEquals(authenticateAdditionalParameters.get("prompt"), AadB2cConstants.TEST_PROMPT); }); } @@ -78,7 +79,7 @@ WebApplicationContextRunner getDefaultContextRunner() { return new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of( AzureGlobalPropertiesAutoConfiguration.class, - WebOAuth2ClientApp.class, + WebOAuth2ClientTestApp.class, AadB2cAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) @@ -165,7 +166,7 @@ void setDefaultValueFromAzureGlobalPropertiesTest() { new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of( AzureGlobalPropertiesAutoConfiguration.class, - WebOAuth2ClientApp.class, + WebOAuth2ClientTestApp.class, AadB2cAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) @@ -189,7 +190,7 @@ void setDefaultValueFromAzureGlobalPropertiesTest() { new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of( AzureGlobalPropertiesAutoConfiguration.class, - WebOAuth2ClientApp.class, + WebOAuth2ClientTestApp.class, AadB2cAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) @@ -255,12 +256,12 @@ void testWebappConditionsIsNotInvokedWhenAADB2CDisabled() { AadB2cConditions.ClientRegistrationCondition clientRegistrationCondition = spy(AadB2cConditions.ClientRegistrationCondition.class); beanUtils.when(() -> BeanUtils.instantiateClass(AadB2cConditions.UserFlowCondition.class)) - .thenReturn(userFlowCondition); + .thenReturn(userFlowCondition); beanUtils.when(() -> BeanUtils.instantiateClass(AadB2cConditions.ClientRegistrationCondition.class)) - .thenReturn(clientRegistrationCondition); + .thenReturn(clientRegistrationCondition); new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of( - WebResourceServerApp.class, + WebResourceServerTestApp.class, AadB2cResourceServerAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) @@ -276,29 +277,24 @@ void testWebappConditionsIsNotInvokedWhenAADB2CDisabled() { @Test void testRestTemplateWellConfigured() { getDefaultContextRunner() - .withUserConfiguration(RestTemplateProxyCustomizerTestConfiguration.class, AadB2cTestWebSecurityConfiguration.class) - .withPropertyValues("spring.cloud.azure.active-directory.b2c.enabled=true") - .run(RestTemplateTestUtil::assertRestTemplateWellConfigured); + .withUserConfiguration(RestTemplateProxyCustomizerTestConfiguration.class, AadB2cTestWebSecurityConfiguration.class) + .withPropertyValues("spring.cloud.azure.active-directory.b2c.enabled=true") + .run(RestTemplateTestUtil::assertRestTemplateWellConfigured); } @EnableWebSecurity - public static class AadB2cTestWebSecurityConfiguration extends WebSecurityConfigurerAdapter { - - private final AadB2cOidcLoginConfigurer configurer; - - AadB2cTestWebSecurityConfiguration(AadB2cOidcLoginConfigurer configurer) { - this.configurer = configurer; - } + public static class AadB2cTestWebSecurityConfiguration { - @Override - protected void configure(HttpSecurity http) throws Exception { + @Bean + public SecurityFilterChain apiFilterChain(HttpSecurity http, AadB2cOidcLoginConfigurer configurer) throws Exception { // @formatter:off http - .authorizeRequests() - .anyRequest().authenticated() - .and() - .apply(configurer); + .authorizeHttpRequests() + .anyRequest().authenticated() + .and() + .apply(configurer); // @formatter:on + return http.build(); } } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cResourceServerAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cResourceServerAutoConfigurationTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cResourceServerAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cResourceServerAutoConfigurationTests.java index 3ae91548ec73..c5374bf2133c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cResourceServerAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AadB2cResourceServerAutoConfigurationTests.java @@ -1,13 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; - -import com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository; -import com.azure.spring.cloud.autoconfigure.aad.implementation.jwt.AadIssuerJwsKeySelector; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cResourceServerAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cTrustedIssuerRepository; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; + +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.AadB2cConstants; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt.AadIssuerJwsKeySelector; +import com.azure.spring.cloud.autoconfigure.implementation.aad.security.jwt.AadTrustedIssuerRepository; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.conditions.AadB2cConditions; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security.jwt.AadB2cTrustedIssuerRepository; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.nimbusds.jose.proc.SecurityContext; import com.nimbusds.jwt.proc.DefaultJWTProcessor; import com.nimbusds.jwt.proc.JWTClaimsSetAwareJWSKeySelector; @@ -44,7 +45,7 @@ private WebApplicationContextRunner getResourceServerContextRunner() { .withClassLoader(new FilteredClassLoader(OAuth2LoginAuthenticationFilter.class)) .withConfiguration(AutoConfigurations.of( AzureGlobalPropertiesAutoConfiguration.class, - WebResourceServerApp.class, + WebResourceServerTestApp.class, AadB2cResourceServerAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) @@ -55,7 +56,7 @@ private WebApplicationContextRunner getResourceServerContextRunner() { WebApplicationContextRunner getDefaultContextRunner() { return new WebApplicationContextRunner() .withConfiguration(AutoConfigurations.of( - WebOAuth2ClientApp.class, + WebOAuth2ClientTestApp.class, AzureGlobalPropertiesAutoConfiguration.class, AadB2cResourceServerAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, @@ -161,7 +162,7 @@ void testResourceServerConditionsIsNotInvokedWhenAADB2CEnableFileDoesNotExists() beanUtils.when(() -> BeanUtils.instantiateClass(AadB2cConditions.ClientRegistrationCondition.class)) .thenReturn(clientRegistrationCondition); new WebApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(WebOAuth2ClientApp.class, + .withConfiguration(AutoConfigurations.of(WebOAuth2ClientTestApp.class, AadB2cResourceServerAutoConfiguration.class)) .withPropertyValues(getB2CResourceServerProperties()) .withPropertyValues(getAuthorizationClientPropertyValues()) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AbstractAadB2cOAuth2ClientTestConfigurations.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AbstractAadB2cOAuth2ClientTestConfigurations.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AbstractAadB2cOAuth2ClientTestConfigurations.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AbstractAadB2cOAuth2ClientTestConfigurations.java index 4171db1f2ca6..2a36f5c8578c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AbstractAadB2cOAuth2ClientTestConfigurations.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/AbstractAadB2cOAuth2ClientTestConfigurations.java @@ -1,16 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; -import com.azure.spring.cloud.autoconfigure.aadb2c.configuration.AadB2cOAuth2ClientConfiguration; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AuthorizationClientProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.AadB2cConstants; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AuthorizationClientProperties; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.context.annotation.Import; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; @@ -21,17 +18,6 @@ abstract class AbstractAadB2cOAuth2ClientTestConfigurations { - @EnableWebSecurity - @Import(OAuth2ClientAutoConfiguration.class) - static class WebOAuth2ClientApp { - - } - - @EnableWebSecurity - static class WebResourceServerApp { - - } - abstract WebApplicationContextRunner getDefaultContextRunner(); protected String[] getAuthorizationClientPropertyValues() { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/WebOAuth2ClientTestApp.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/WebOAuth2ClientTestApp.java new file mode 100644 index 000000000000..69cf0e075b66 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/WebOAuth2ClientTestApp.java @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; + +import org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration; +import org.springframework.context.annotation.Import; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; + +@EnableWebSecurity +@Import(OAuth2ClientAutoConfiguration.class) +public class WebOAuth2ClientTestApp { + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/WebResourceServerTestApp.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/WebResourceServerTestApp.java new file mode 100644 index 000000000000..51742e900d66 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/configuration/WebResourceServerTestApp.java @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration; + +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; + +@EnableWebSecurity +public class WebResourceServerTestApp { + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cAuthorizationRequestResolverTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cAuthorizationRequestResolverTests.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cAuthorizationRequestResolverTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cAuthorizationRequestResolverTests.java index 334ee9e43bb3..7f026ec54a90 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cAuthorizationRequestResolverTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cAuthorizationRequestResolverTests.java @@ -1,10 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAuthorizationRequestResolver; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.AadB2cConstants; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.AadB2cAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.WebOAuth2ClientTestApp; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import jakarta.servlet.http.HttpServletRequest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -15,10 +17,9 @@ import org.springframework.http.HttpMethod; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.security.oauth2.core.AuthorizationGrantType; -import org.springframework.security.oauth2.server.resource.BearerTokenAuthenticationToken; +import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken; import org.springframework.util.Assert; -import javax.servlet.http.HttpServletRequest; import java.util.Arrays; class AadB2cAuthorizationRequestResolverTests { @@ -28,7 +29,7 @@ private WebApplicationContextRunner getContextRunner() { .withClassLoader(new FilteredClassLoader(BearerTokenAuthenticationToken.class)) .withConfiguration(AutoConfigurations.of( AzureGlobalPropertiesAutoConfiguration.class, - AbstractAadB2cOAuth2ClientTestConfigurations.WebOAuth2ClientApp.class, + WebOAuth2ClientTestApp.class, AadB2cAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class)) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cLogoutSuccessHandlerTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cLogoutSuccessHandlerTests.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cLogoutSuccessHandlerTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cLogoutSuccessHandlerTests.java index 200615608591..a34129065ff1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cLogoutSuccessHandlerTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cLogoutSuccessHandlerTests.java @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; -import com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cLogoutSuccessHandler; -import com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties; +import com.azure.spring.cloud.autoconfigure.implementation.aadb2c.configuration.properties.AadB2cProperties; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUrlTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cUrlTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUrlTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cUrlTests.java index 7c8f90f30157..e7e3f9e237ca 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aadb2c/implementation/AadB2cUrlTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/aadb2c/security/AadB2cUrlTests.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.aadb2c.implementation; +package com.azure.spring.cloud.autoconfigure.implementation.aadb2c.security; import org.junit.jupiter.api.Assertions; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/appconfiguration/AzureAppConfigurationAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/appconfiguration/AzureAppConfigurationAutoConfigurationTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/appconfiguration/AzureAppConfigurationAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/appconfiguration/AzureAppConfigurationAutoConfigurationTests.java index 9b1b59b6afe0..b8b2852678a9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/appconfiguration/AzureAppConfigurationAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/appconfiguration/AzureAppConfigurationAutoConfigurationTests.java @@ -1,17 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.appconfiguration; +package com.azure.spring.cloud.autoconfigure.implementation.appconfiguration; import com.azure.data.appconfiguration.ConfigurationAsyncClient; import com.azure.data.appconfiguration.ConfigurationClient; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import com.azure.spring.cloud.service.implementation.appconfiguration.ConfigurationClientBuilderFactory; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityVerifierAutoConfigurationTest.java similarity index 85% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierAutoConfigurationTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityVerifierAutoConfigurationTest.java index 1e663090aa17..813945eeacb0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/compatibility/AzureCompatibilityVerifierAutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureCompatibilityVerifierAutoConfigurationTest.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.compatibility; +package com.azure.spring.cloud.autoconfigure.implementation.compatibility; -import com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureSpringBootVersionVerifier; +import com.azure.spring.cloud.autoconfigure.implementation.compatibility.properties.AzureCompatibilityVerifierProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.SpringBootVersion; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -13,7 +13,7 @@ import static org.assertj.core.api.Assertions.assertThat; -public class AzureCompatibilityVerifierAutoConfigurationTest { +class AzureCompatibilityVerifierAutoConfigurationTest { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureCompatibilityVerifierAutoConfiguration.class)); @@ -21,13 +21,13 @@ public class AzureCompatibilityVerifierAutoConfigurationTest { @Test void testCompatibilityVerifierPropertiesDisabled() { this.contextRunner - .withPropertyValues("spring.cloud.azure.compatibility-verifier.enabled=false") .run(context -> assertThat(context).doesNotHaveBean(AzureSpringBootVersionVerifier.class)); } @Test void testCompatibilityVerifierPropertiesEnabled() { this.contextRunner + .withPropertyValues("spring.cloud.azure.compatibility-verifier.enabled=true") .run(context -> assertThat(context).hasSingleBean(AzureSpringBootVersionVerifier.class)); } @@ -35,6 +35,7 @@ void testCompatibilityVerifierPropertiesEnabled() { void testCompatibleSpringBootVersionCanSet() { String version = SpringBootVersion.getVersion(); this.contextRunner + .withPropertyValues("spring.cloud.azure.compatibility-verifier.enabled=true") .withPropertyValues( String.format("spring.cloud.azure.compatibility-verifier.compatible-boot-versions=%s", version) ) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifierTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifierTest.java index 48cc4b6b5867..eee0c8cb66be 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifierTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/AzureSpringBootVersionVerifierTest.java @@ -15,8 +15,7 @@ import java.util.Collections; import java.util.List; -import static com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureSpringBootVersionVerifier.SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5; -import static com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureSpringBootVersionVerifier.SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6; +import static com.azure.spring.cloud.autoconfigure.implementation.compatibility.AzureSpringBootVersionVerifier.SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -28,15 +27,15 @@ class AzureSpringBootVersionVerifierTest { @ParameterizedTest - @ValueSource(strings = { "2.6", "2.6.2", "2.6.x" }) - public void shouldMatchWhenManifestNumberAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { + @ValueSource(strings = { "3.0.0", "3.0.x", "3.0.0-M" }) + void shouldMatchWhenManifestNumberAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { String getVersionFromManifest() { - return "2.6.2"; + return "3.0.0-M4"; } }; VerificationResult verificationResult = versionVerifier.verify(); @@ -45,14 +44,14 @@ String getVersionFromManifest() { } @ParameterizedTest - @ValueSource(strings = { "2.6", "2.6.2", "2.6.x" }) - public void shouldNotMatchWhenManifestNumberAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { + @ValueSource(strings = { "3.0.0", "3.0.x" }) + void shouldNotMatchWhenManifestNumberAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { String getVersionFromManifest() { - return "2.5.2"; + return "2.7.2"; } }; @@ -61,12 +60,11 @@ String getVersionFromManifest() { @ParameterizedTest - @ValueSource(strings = { "2.5", "2.5.x", "2.6", "2.6.x" }) - public void shouldMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { + @ValueSource(strings = { "3.0", "3.0.x" }) + void shouldMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5)).thenReturn(true); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6)).thenReturn(true); + when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0)).thenReturn(true); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { @@ -83,12 +81,11 @@ String getVersionFromManifest() { @ParameterizedTest - @ValueSource(strings = { "2.6", "2.6.x" }) - public void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { + @ValueSource(strings = { "3.1", "3.1.x" }) + void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase1(String acceptedVersion) { List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5)).thenReturn(true); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6)).thenReturn(false); + when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0)).thenReturn(true); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { @@ -101,12 +98,11 @@ String getVersionFromManifest() { } @ParameterizedTest - @ValueSource(strings = { "2.6.2" }) - public void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase2() { - List acceptedVersions = Collections.singletonList("2.6.2"); + @ValueSource(strings = { "3.0.0-M3" }) + void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase2(String acceptedVersion) { + List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5)).thenReturn(true); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6)).thenReturn(true); + when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0)).thenReturn(true); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { @@ -119,12 +115,11 @@ String getVersionFromManifest() { } @ParameterizedTest - @ValueSource(strings = { "2.5.2" }) - public void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase3() { - List acceptedVersions = Collections.singletonList("2.6.2"); + @ValueSource(strings = { "3.0.0-M4" }) + void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase3(String acceptedVersion) { + List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5)).thenReturn(true); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6)).thenReturn(true); + when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0)).thenReturn(true); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { @@ -138,12 +133,11 @@ String getVersionFromManifest() { @ParameterizedTest - @ValueSource(strings = { "2.5", "2.5.x" }) - public void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase4() { - List acceptedVersions = Collections.singletonList("2.6.2"); + @ValueSource(strings = { "3.0", "3.0.x" }) + void shouldNotMatchWhenManifestNumberNotPresentAndAcceptedNumberSpecifiedCase4(String acceptedVersion) { + List acceptedVersions = Collections.singletonList(acceptedVersion); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_5)).thenReturn(false); - when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_2_6)).thenReturn(false); + when(mockResolver.resolve(SPRINGBOOT_CONDITIONAL_CLASS_NAME_OF_3_0)).thenReturn(false); AzureSpringBootVersionVerifier versionVerifier = new AzureSpringBootVersionVerifier(acceptedVersions, mockResolver) { @@ -156,7 +150,7 @@ String getVersionFromManifest() { } @Test - public void testVersionVerifierLog(CapturedOutput capturedOutput) { + void testVersionVerifierLog(CapturedOutput capturedOutput) { List acceptedVersions = Arrays.asList("2.5.x", "2.6.x", "2.7.x"); ClassNameResolverPredicate mockResolver = mock(ClassNameResolverPredicate.class); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicateTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicateTest.java new file mode 100644 index 000000000000..3301c5f9eb10 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/compatibility/ClassNameResolverPredicateTest.java @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.compatibility; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ClassNameResolverPredicateTest { + + @Test + void testResolve() { + ClassNameResolverPredicate predicate = new ClassNameResolverPredicate(); + Assertions.assertTrue(predicate.resolve("com.azure.spring.cloud.autoconfigure.implementation.compatibility.ClassNameResolverPredicateTest")); + Assertions.assertTrue(predicate.resolve("com.azure.spring.cloud.autoconfigure.implementation.compatibility.ClassNameResolverPredicateTest,testMethod")); + Assertions.assertTrue(predicate.resolve("com.azure.spring.cloud.autoconfigure.implementation.compatibility.ClassNameResolverPredicateTest,testMethod2,boolean")); + Assertions.assertTrue(predicate.resolve("com.azure.spring.cloud.autoconfigure.implementation.compatibility.ClassNameResolverPredicateTest,testMethod3,boolean,java.lang.String")); + Assertions.assertFalse(predicate.resolve("com.azure.spring.cloud.autoconfigure.implementation.compatibility.ClassNameResolverPredicateTest,testMethod4")); + } + + public void testMethod() {} + public void testMethod2(boolean b) {} + public void testMethod3(boolean b, String a) {} +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnAnyPropertyTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnAnyPropertyTests.java similarity index 99% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnAnyPropertyTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnAnyPropertyTests.java index 013c7de7bc83..a50ee31f8d4c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/condition/ConditionalOnAnyPropertyTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/condition/ConditionalOnAnyPropertyTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.condition; +package com.azure.spring.cloud.autoconfigure.implementation.condition; import org.junit.jupiter.api.Test; import org.springframework.boot.test.util.TestPropertyValues; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalConfigurationEnvironmentPostProcessorTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessorTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalConfigurationEnvironmentPostProcessorTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessorTests.java index fa556aa44844..e72a5c8443e5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalConfigurationEnvironmentPostProcessorTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessorTests.java @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; import com.azure.core.http.policy.HttpLogDetailLevel; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalPropertiesAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalPropertiesAutoConfigurationTests.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalPropertiesAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalPropertiesAutoConfigurationTests.java index df02022069db..91671ef38db7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalPropertiesAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalPropertiesAutoConfigurationTests.java @@ -1,16 +1,26 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; import com.azure.core.amqp.AmqpTransportType; import com.azure.core.management.AzureEnvironment; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import org.junit.jupiter.api.Test; +import org.springframework.aot.test.generate.TestGenerationContext; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.aot.ApplicationContextAotGenerator; +import org.springframework.context.support.GenericApplicationContext; +import org.springframework.core.test.tools.CompileWithForkedClassLoader; +import org.springframework.core.test.tools.TestCompiler; +import org.springframework.javapoet.ClassName; import java.time.Duration; import java.util.Arrays; +import java.util.function.Consumer; import static com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider.CloudType.AZURE; import static com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider.CloudType.AZURE_CHINA; @@ -157,4 +167,30 @@ void testAzureProfileAzureChina() { }); } + @Test + @CompileWithForkedClassLoader + void processAheadOfTimeDoesNotRegisterAzureGlobalProperties() { + GenericApplicationContext context = new AnnotationConfigApplicationContext(); + context.registerBean(AzureGlobalPropertiesAutoConfiguration.class); + compile(context, (freshContext) -> { + freshContext.refresh(); + assertThat(freshContext.getBeansOfType(AzureGlobalProperties.class)).isEmpty(); + }); + } + + @SuppressWarnings("unchecked") + private void compile(GenericApplicationContext context, Consumer freshContext) { + TestGenerationContext generationContext = new TestGenerationContext( + ClassName.get(getClass().getPackageName(), "TestTarget")); + ClassName className = new ApplicationContextAotGenerator().processAheadOfTime(context, generationContext); + generationContext.writeGeneratedContent(); + TestCompiler.forSystem().with(generationContext).compile((compiled) -> { + GenericApplicationContext freshApplicationContext = new GenericApplicationContext(); + ApplicationContextInitializer initializer = compiled + .getInstance(ApplicationContextInitializer.class, className.toString()); + initializer.initialize(freshApplicationContext); + freshContext.accept(freshApplicationContext); + }); + } + } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureTokenCredentialAutoConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureTokenCredentialAutoConfigurationTests.java index 381223da507d..e3d28e98d2bc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/AzureTokenCredentialAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context; +package com.azure.spring.cloud.autoconfigure.implementation.context; import com.azure.core.credential.TokenCredential; import com.azure.core.management.AzureEnvironment; @@ -12,7 +12,8 @@ import com.azure.identity.ManagedIdentityCredential; import com.azure.identity.UsernamePasswordCredential; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; import com.azure.spring.cloud.core.credential.AzureCredentialResolver; import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver; @@ -38,15 +39,12 @@ import java.time.Duration; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_CREDENTIAL_TASK_EXECUTOR_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_CREDENTIAL_TASK_EXECUTOR_BEAN_NAME; import static com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider.CloudType.AZURE_US_GOVERNMENT; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -/** - * - */ class AzureTokenCredentialAutoConfigurationTests { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/properties/AdditionalSpringConfigurationMetadataTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/properties/AdditionalSpringConfigurationMetadataTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/properties/AdditionalSpringConfigurationMetadataTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/properties/AdditionalSpringConfigurationMetadataTests.java index 48bb05ed3864..d2ce41cfa182 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/context/properties/AdditionalSpringConfigurationMetadataTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/context/properties/AdditionalSpringConfigurationMetadataTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.context.properties; +package com.azure.spring.cloud.autoconfigure.implementation.context.properties; import org.junit.jupiter.api.Test; import org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cosmos/AzureCosmosAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/AzureCosmosAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cosmos/AzureCosmosAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/AzureCosmosAutoConfigurationTests.java index 98d4af9f7e59..329b1069eecc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cosmos/AzureCosmosAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/cosmos/AzureCosmosAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.cosmos; import com.azure.cosmos.ConnectionMode; import com.azure.cosmos.ConsistencyLevel; @@ -9,9 +9,9 @@ import com.azure.cosmos.CosmosClient; import com.azure.cosmos.CosmosClientBuilder; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; import com.azure.spring.cloud.service.implementation.cosmos.CosmosClientBuilderFactory; import org.junit.jupiter.api.Test; @@ -28,9 +28,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -/** - * - */ class AzureCosmosAutoConfigurationTests extends AbstractAzureServiceConfigurationTests< CosmosClientBuilderFactory, AzureCosmosProperties> { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataAutoConfigurationTests.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataAutoConfigurationTests.java index bd6e642fa913..faf374b36fd0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.cosmos.CosmosClientBuilder; import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; @@ -10,6 +10,7 @@ import com.azure.spring.data.cosmos.core.CosmosTemplate; import com.azure.spring.data.cosmos.core.ReactiveCosmosTemplate; import com.azure.spring.data.cosmos.core.ResponseDiagnosticsProcessor; +import com.azure.spring.data.cosmos.core.mapping.EnableCosmosAuditing; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -121,4 +122,31 @@ void hasResponseDiagnosticsProcessorWhenEnableQueryMetrics() { }); } } + + @Test + void testWithEnableAuditing() { + try (MockedStatic ignored = mockStatic(CosmosFactory.class, RETURNS_MOCKS)) { + AzureCosmosProperties azureCosmosProperties = new AzureCosmosProperties(); + azureCosmosProperties.setEndpoint(ENDPOINT); + azureCosmosProperties.setDatabase("test"); + + this.contextRunner + .withBean(CosmosClientBuilder.class, () -> mock(CosmosClientBuilder.class)) + .withBean(AzureCosmosProperties.class, () -> azureCosmosProperties) + .withUserConfiguration(UserAuditingConfiguration.class) + .withPropertyValues( + "spring.cloud.azure.cosmos.endpoint=" + ENDPOINT, + "spring.cloud.azure.cosmos.database=test" + ) + .run(context -> { + assertThat(context).hasSingleBean(CosmosConfig.class); + assertThat(context).hasSingleBean(CosmosTemplate.class); + }); + } + } + + @EnableCosmosAuditing + static class UserAuditingConfiguration { + + } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataDiagnosticsConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataDiagnosticsConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataDiagnosticsConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataDiagnosticsConfigurationTests.java index 0d5b3123179d..4ad9e655025d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosDataDiagnosticsConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosDataDiagnosticsConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.spring.data.cosmos.core.ResponseDiagnostics; import com.azure.spring.data.cosmos.core.ResponseDiagnosticsProcessor; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfigurationTests.java index 333b2836bf5c..05d4e2f10045 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosReactiveRepositoriesAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosReactiveRepositoriesAutoConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.cosmos.models.CosmosContainerProperties; import com.azure.cosmos.models.CosmosContainerResponse; -import com.azure.spring.cloud.autoconfigure.data.cosmos.domain.Person; -import com.azure.spring.cloud.autoconfigure.data.cosmos.domain.ReactivePersonRepository; +import com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain.Person; +import com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain.ReactivePersonRepository; import com.azure.spring.data.cosmos.core.ReactiveCosmosTemplate; import com.azure.spring.data.cosmos.core.convert.MappingCosmosConverter; import com.azure.spring.data.cosmos.core.mapping.CosmosMappingContext; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfigurationTests.java index 2a42d7044b1b..32a8a573e90f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/CosmosRepositoriesAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/CosmosRepositoriesAutoConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import com.azure.cosmos.models.CosmosContainerProperties; -import com.azure.spring.cloud.autoconfigure.data.cosmos.domain.Person; -import com.azure.spring.cloud.autoconfigure.data.cosmos.domain.PersonRepository; +import com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain.Person; +import com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain.PersonRepository; import com.azure.spring.data.cosmos.core.CosmosTemplate; import com.azure.spring.data.cosmos.core.convert.MappingCosmosConverter; import com.azure.spring.data.cosmos.core.mapping.CosmosMappingContext; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/TestAutoConfigurationPackage.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/TestAutoConfigurationPackage.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/TestAutoConfigurationPackage.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/TestAutoConfigurationPackage.java index e88f5095c34f..af2a82fe5bf0 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/TestAutoConfigurationPackage.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/TestAutoConfigurationPackage.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import org.springframework.context.annotation.Import; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/TestAutoConfigurationPackageRegistrar.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/TestAutoConfigurationPackageRegistrar.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/TestAutoConfigurationPackageRegistrar.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/TestAutoConfigurationPackageRegistrar.java index b12b1f96aadd..abe2d8790316 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/TestAutoConfigurationPackageRegistrar.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/TestAutoConfigurationPackageRegistrar.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.boot.autoconfigure.AutoConfigurationPackages; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/Person.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/Person.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/Person.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/Person.java index f6c1aa5514ab..05cc064378d3 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/Person.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/Person.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos.domain; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain; public class Person { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/PersonRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/PersonRepository.java similarity index 75% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/PersonRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/PersonRepository.java index 165fcec29219..f17e87b12232 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/PersonRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/PersonRepository.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos.domain; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain; import com.azure.spring.data.cosmos.repository.CosmosRepository; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/ReactivePersonRepository.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/ReactivePersonRepository.java similarity index 76% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/ReactivePersonRepository.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/ReactivePersonRepository.java index 069e1a46f781..02247d20f79e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/data/cosmos/domain/ReactivePersonRepository.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/cosmos/domain/ReactivePersonRepository.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.data.cosmos.domain; +package com.azure.spring.cloud.autoconfigure.implementation.data.cosmos.domain; import com.azure.spring.data.cosmos.repository.ReactiveCosmosRepository; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfigurationTest.java new file mode 100644 index 000000000000..a0dc607e282c --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/data/redis/AzureLettucePasswordlessAutoConfigurationTest.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.data.redis; + +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.data.redis.lettuce.AzureRedisCredentials; +import io.lettuce.core.RedisCredentials; +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.FilteredClassLoader; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.data.redis.connection.lettuce.LettuceConnection; + +import static org.assertj.core.api.Assertions.assertThat; + +class AzureLettucePasswordlessAutoConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withBean(AzureGlobalProperties.class, () -> new AzureGlobalProperties()) + .withConfiguration(AutoConfigurations.of(AzureLettucePasswordlessAutoConfiguration.class)); + + @Test + void configureWithoutSpringDataLettuceConnection() { + this.contextRunner + .withClassLoader(new FilteredClassLoader(LettuceConnection.class)) + .withPropertyValues( + "spring.data.redis.azure.passwordless-enabled=true", + "spring.data.redis.host=localhost" + ) + .run((context) -> assertThat(context).doesNotHaveBean(AzureLettucePasswordlessAutoConfiguration.class)); + } + + @Test + void configureWithoutLettuceCore() { + this.contextRunner + .withClassLoader(new FilteredClassLoader(RedisCredentials.class)) + .withPropertyValues( + "spring.data.redis.azure.passwordless-enabled=true", + "spring.data.redis.host=localhost" + ) + .run((context) -> assertThat(context).doesNotHaveBean(AzureLettucePasswordlessAutoConfiguration.class)); + } + + @Test + void configureWithPasswordlessDisabled() { + this.contextRunner + .withPropertyValues( + "spring.data.redis.azure.passwordless-enabled=false", + "spring.data.redis.host=localhost" + ) + .run(context -> assertThat(context).doesNotHaveBean(AzureLettucePasswordlessAutoConfiguration.class)); + } + + @Test + void configureWithoutHost() { + this.contextRunner + .withPropertyValues( + "spring.data.redis.azure.passwordless-enabled=true" + ) + .run(context -> assertThat(context).doesNotHaveBean(AzureLettucePasswordlessAutoConfiguration.class)); + } + + @Test + void configureWithPasswordlessEnabled() { + this.contextRunner + .withPropertyValues( + "spring.data.redis.azure.passwordless-enabled=true", + "spring.data.redis.host=localhost", + "spring.data.redis.username=azure-username" + ) + .run(context -> { + assertThat(context).hasSingleBean(AzureLettucePasswordlessAutoConfiguration.class); + assertThat(context).hasSingleBean(AzureRedisCredentials.class); + }); + } + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfigurationTests.java index d8a5b084bf23..1cb481a4fcf7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventgrid/AzureEventGridAutoConfigurationTests.java @@ -6,10 +6,14 @@ import com.azure.core.util.BinaryData; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; -import com.azure.messaging.eventgrid.*; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.messaging.eventgrid.EventGridEvent; +import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient; +import com.azure.messaging.eventgrid.EventGridPublisherClient; +import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder; +import com.azure.messaging.eventgrid.EventGridServiceVersion; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventgrid.properties.AzureEventGridProperties; import com.azure.spring.cloud.service.implementation.eventgrid.factory.EventGridPublisherClientBuilderFactory; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureBlobCheckpointStoreConfigurationTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureBlobCheckpointStoreConfigurationTests.java index d82e69a4c3c8..814cf75d075b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureBlobCheckpointStoreConfigurationTests.java @@ -1,14 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.service.eventhubs.BlobCheckpointStoreContainerInitializer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; -import com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; import com.azure.spring.cloud.service.implementation.storage.blob.BlobServiceClientBuilderFactory; import com.azure.storage.blob.BlobContainerAsyncClient; import com.azure.storage.blob.BlobServiceAsyncClient; @@ -22,10 +23,10 @@ import java.util.Map; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_FACTORY_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_FACTORY_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.STORAGE_BLOB_CLIENT_BUILDER_FACTORY_BEAN_NAME; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsAutoConfigurationTests.java index cccc84dd3665..09dacc93710c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsAutoConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.properties.profile.AzureEnvironmentProperties; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; @@ -22,7 +22,7 @@ import java.time.Instant; import static com.azure.messaging.eventhubs.LoadBalancingStrategy.GREEDY; -import static com.azure.spring.cloud.autoconfigure.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsClientBuilderConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfigurationTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsClientBuilderConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfigurationTests.java index 4fe9fcc6042e..d4b92480a714 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsClientBuilderConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfigurationTests.java @@ -1,17 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; import com.azure.spring.cloud.service.implementation.eventhubs.factory.EventHubClientBuilderFactory; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureEventHubsClientBuilderConfigurationTests { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java index 19965b9f0009..751b0488f619 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java @@ -1,22 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventHubConsumerAsyncClient; import com.azure.messaging.eventhubs.EventHubConsumerClient; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureContextUtils; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureEventHubsConsumerClientConfigurationTests { @@ -97,8 +95,6 @@ void withDedicatedEvenHubConnectionSetShouldConfigureDedicated() { context -> { assertThat(context).doesNotHaveBean(AzureEventHubsConsumerClientConfiguration.SharedConsumerConnectionConfiguration.class); assertThat(context).hasSingleBean(AzureEventHubsConsumerClientConfiguration.DedicatedConsumerConnectionConfiguration.class); - assertThat(context).hasBean(EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME); - assertThat(context).hasBean(EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME); assertThat(context).hasSingleBean(EventHubConsumerAsyncClient.class); assertThat(context).hasSingleBean(EventHubConsumerClient.class); assertThat(context).hasBean(AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_FACTORY_BEAN_NAME); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsMessagingAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfigurationTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsMessagingAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfigurationTests.java index 1127bd17fb25..eea8bec890b2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsMessagingAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsMessagingAutoConfigurationTests.java @@ -1,12 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.messaging.eventhubs.CheckpointStore; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration.TestCheckpointStore; import com.azure.spring.messaging.eventhubs.core.EventHubsProcessorFactory; import com.azure.spring.messaging.eventhubs.core.EventHubsTemplate; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -14,7 +15,7 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalStateException; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProcessorClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProcessorClientConfigurationTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProcessorClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProcessorClientConfigurationTests.java index bf89068459ac..1247c22871c7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProcessorClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProcessorClientConfigurationTests.java @@ -1,14 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.EventProcessorClient; import com.azure.messaging.eventhubs.EventProcessorClientBuilder; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration.TestCheckpointStore; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration.TestEventHubsRecordMessageListener; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsBatchMessageListener; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsErrorHandler; import com.azure.spring.cloud.service.implementation.eventhubs.factory.EventProcessorClientBuilderFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProducerClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfigurationTests.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProducerClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfigurationTests.java index 2d2261192ee7..d8c4f6147c89 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsProducerClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfigurationTests.java @@ -1,22 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; import com.azure.messaging.eventhubs.EventHubProducerClient; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureContextUtils; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_FACTORY_BEAN_NAME; -import static com.azure.spring.cloud.autoconfigure.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureEventHubsProducerClientConfigurationTests { @@ -92,8 +90,6 @@ void withDedicatedEvenHubConnectionSetShouldConfigureDedicated() { context -> { assertThat(context).doesNotHaveBean(AzureEventHubsProducerClientConfiguration.SharedProducerConnectionConfiguration.class); assertThat(context).hasSingleBean(AzureEventHubsProducerClientConfiguration.DedicatedProducerConnectionConfiguration.class); - assertThat(context).hasBean(EVENT_HUB_PRODUCER_CLIENT_BUILDER_FACTORY_BEAN_NAME); - assertThat(context).hasBean(EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME); assertThat(context).hasSingleBean(EventHubProducerClient.class); assertThat(context).hasSingleBean(EventHubProducerAsyncClient.class); assertThat(context).hasBean(AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_FACTORY_BEAN_NAME); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsPropertiesTestConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsPropertiesTestConfiguration.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsPropertiesTestConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsPropertiesTestConfiguration.java index 6fc652f0b110..fa5b4fa8a757 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsPropertiesTestConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsPropertiesTestConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -13,7 +13,7 @@ class AzureEventHubsPropertiesTestConfiguration { @Bean @ConfigurationProperties(AzureEventHubsProperties.PREFIX) - public AzureEventHubsProperties azureEventHubsProperties() { + AzureEventHubsProperties azureEventHubsProperties() { return new AzureEventHubsProperties(); } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsTemplateConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsTemplateConfigurationTests.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsTemplateConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsTemplateConfigurationTests.java index 014b37db0217..22e5a467c107 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureEventHubsTemplateConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsTemplateConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; import com.azure.spring.messaging.eventhubs.core.EventHubsProducerFactory; import com.azure.spring.messaging.eventhubs.core.EventHubsTemplate; @@ -10,7 +10,7 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.EventHubsTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureEventHubsTemplateConfigurationTests { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/EventHubsTestUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/EventHubsTestUtils.java similarity index 81% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/EventHubsTestUtils.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/EventHubsTestUtils.java index 83b61f1cf8e4..6152644481bc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/EventHubsTestUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/EventHubsTestUtils.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs; abstract class EventHubsTestUtils { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/TestCheckpointStore.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/configuration/TestCheckpointStore.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/TestCheckpointStore.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/configuration/TestCheckpointStore.java index 73ddaeba7640..3d93edb54e4b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/TestCheckpointStore.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/configuration/TestCheckpointStore.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.models.Checkpoint; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/TestEventHubsRecordMessageListener.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/configuration/TestEventHubsRecordMessageListener.java similarity index 83% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/TestEventHubsRecordMessageListener.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/configuration/TestEventHubsRecordMessageListener.java index b69ccb6009b5..6bebed982099 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/TestEventHubsRecordMessageListener.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/configuration/TestEventHubsRecordMessageListener.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration; import com.azure.messaging.eventhubs.models.EventContext; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsRecordMessageListener; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaAutoConfigurationTests.java index f73e6ed57fc9..5f90efac1cd2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaAutoConfigurationTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.ArmConnectionStringProvider; @@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat; +@SuppressWarnings("deprecation") class AzureEventHubsKafkaAutoConfigurationTests { static final String CONNECTION_STRING_FORMAT = diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaConfigurationTests.java similarity index 83% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaConfigurationTests.java index 6f019424148c..8c9b39b78ef6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/eventhubs/kafka/AzureEventHubsKafkaConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/kafka/AzureEventHubsKafkaConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.kafka.AzureEventHubsKafkaOAuth2AutoConfiguration; -import com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.kafka.AzureEventHubsKafkaOAuth2AutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.kafka.AzureKafkaSpringCloudStreamConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; @@ -22,7 +22,7 @@ import java.util.Collections; import java.util.Map; -import static com.azure.spring.cloud.autoconfigure.eventhubs.kafka.AzureEventHubsKafkaAutoConfigurationTests.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfigurationTests.CONNECTION_STRING_FORMAT; import static org.apache.kafka.clients.CommonClientConfigs.SECURITY_PROTOCOL_CONFIG; import static org.apache.kafka.clients.consumer.ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG; import static org.apache.kafka.common.config.SaslConfigs.SASL_MECHANISM; @@ -31,6 +31,7 @@ class AzureEventHubsKafkaConfigurationTests { + @SuppressWarnings("deprecation") private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureEventHubsKafkaOAuth2AutoConfiguration.class, AzureEventHubsKafkaAutoConfiguration.class, AzureGlobalPropertiesAutoConfiguration.class, AzureTokenCredentialAutoConfiguration.class, diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/AbstractAzureJdbcAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/AbstractAzureJdbcAutoConfigurationTest.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/AbstractAzureJdbcAutoConfigurationTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/AbstractAzureJdbcAutoConfigurationTest.java index 3326ddd16ec8..761fd6e19289 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/AbstractAzureJdbcAutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/AbstractAzureJdbcAutoConfigurationTest.java @@ -1,13 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.identity.extensions.implementation.enums.AuthProperty; import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.SpringTokenCredentialProviderContextProvider; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcConnectionStringUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcConnectionStringUtils.java index c3d39e227573..c61cbc261c9b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcConnectionStringUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcConnectionStringUtils.java @@ -8,7 +8,7 @@ import java.util.TreeMap; import java.util.stream.Collectors; -public class JdbcConnectionStringUtils { +class JdbcConnectionStringUtils { private static String buildEnhancedPropertiesOrderedString(Map enhancedProperties, String queryDelimiter) { String enhancedPropertyString = new TreeMap<>(enhancedProperties).entrySet() @@ -18,11 +18,11 @@ private static String buildEnhancedPropertiesOrderedString(Map e return enhancedPropertyString; } - public static String enhanceJdbcUrl(DatabaseType databaseType, String baseUrl, String... properties) { + static String enhanceJdbcUrl(DatabaseType databaseType, String baseUrl, String... properties) { return enhanceJdbcUrl(databaseType, true, baseUrl, properties); } - public static String enhanceJdbcUrl(DatabaseType databaseType, boolean hasOriginalProperties, String baseUrl, String... properties) { + static String enhanceJdbcUrl(DatabaseType databaseType, boolean hasOriginalProperties, String baseUrl, String... properties) { Map enhancedProperties = new HashMap<>(databaseType.getDefaultEnhancedProperties()); for (String property : properties) { String[] split = property.split("="); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorTest.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessorTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorTest.java index d4e1078c038e..72f36bb8853c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessorTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorTest.java @@ -1,13 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.identity.extensions.implementation.enums.AuthProperty; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.DatabaseType; -import com.azure.spring.cloud.autoconfigure.properties.core.authentication.TokenCredentialConfigurationProperties; -import com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.authentication.TokenCredentialConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.properties.core.profile.AzureProfileConfigurationProperties; import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; @@ -22,7 +21,7 @@ import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcConnectionStringUtils.enhanceJdbcUrl; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_NAME_ASSUME_MIN_SERVER_VERSION; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcPropertyConstants.POSTGRESQL_PROPERTY_VALUE_ASSUME_MIN_SERVER_VERSION; -import static com.azure.spring.cloud.autoconfigure.jdbc.MySqlAzureJdbcAutoConfigurationTest.MYSQL_USER_AGENT; +import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.MySqlAzureJdbcAutoConfigurationTest.MYSQL_USER_AGENT; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.Mockito.mock; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java index 3065375e4f67..34badc584b5f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertiesBeanPostProcessorWithApplicationContextRunnerTest.java @@ -1,17 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.identity.extensions.implementation.enums.AuthProperty; import com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.DatabaseType; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.SpringTokenCredentialProviderContextProvider; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider; -import com.azure.spring.cloud.service.implementation.passwordless.AzureJdbcPasswordlessProperties; +import com.azure.spring.cloud.autoconfigure.implementation.passwordless.properties.AzureJdbcPasswordlessProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; @@ -21,7 +19,7 @@ import org.springframework.core.env.ConfigurableEnvironment; import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcConnectionStringUtils.enhanceJdbcUrl; -import static com.azure.spring.cloud.autoconfigure.jdbc.MySqlAzureJdbcAutoConfigurationTest.MYSQL_USER_AGENT; +import static com.azure.spring.cloud.autoconfigure.implementation.jdbc.MySqlAzureJdbcAutoConfigurationTest.MYSQL_USER_AGENT; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertyConstantsTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertyConstantsTest.java index 90f2e730ba05..e4c8d7622701 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertyConstantsTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/JdbcPropertyConstantsTest.java @@ -6,6 +6,7 @@ import com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin; import com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin; import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; class JdbcPropertyConstantsTest { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/MySqlAzureJdbcAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/MySqlAzureJdbcAutoConfigurationTest.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/MySqlAzureJdbcAutoConfigurationTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/MySqlAzureJdbcAutoConfigurationTest.java index d4470b51112c..a743dd418be7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/MySqlAzureJdbcAutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/MySqlAzureJdbcAutoConfigurationTest.java @@ -1,11 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.identity.extensions.implementation.enums.AuthProperty; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.DatabaseType; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcConnectionStringUtils; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/PostgreSqlAzureJdbcAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/PostgreSqlAzureJdbcAutoConfigurationTest.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/PostgreSqlAzureJdbcAutoConfigurationTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/PostgreSqlAzureJdbcAutoConfigurationTest.java index 722ebc7f6997..301faa2d8902 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jdbc/PostgreSqlAzureJdbcAutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jdbc/PostgreSqlAzureJdbcAutoConfigurationTest.java @@ -1,11 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jdbc; +package com.azure.spring.cloud.autoconfigure.implementation.jdbc; import com.azure.identity.extensions.implementation.enums.AuthProperty; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.DatabaseType; -import com.azure.spring.cloud.autoconfigure.implementation.jdbc.JdbcConnectionStringUtils; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.identity.credential.provider.SpringTokenCredentialProvider; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java index 5abb3c4ac519..9e097bfb42a9 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsAutoConfigurationTests.java @@ -1,13 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; -import com.microsoft.azure.servicebus.jms.ServiceBusJmsConnectionFactory; +import com.azure.spring.jms.ServiceBusJmsConnectionFactory; +import jakarta.jms.ConnectionFactory; +import jakarta.jms.Session; import org.apache.qpid.jms.JmsConnectionFactory; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -28,15 +30,12 @@ import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.listener.DefaultMessageListenerContainer; -import javax.jms.ConnectionFactory; -import javax.jms.Session; import java.time.Duration; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; -import static org.springframework.boot.autoconfigure.jms.JmsProperties.AcknowledgeMode.CLIENT; class ServiceBusJmsAutoConfigurationTests { @@ -44,7 +43,7 @@ class ServiceBusJmsAutoConfigurationTests { + "SharedAccessKey=sasKey"; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withBean(AzureGlobalProperties.class, AzureGlobalProperties::new) + .withBean(AzureGlobalProperties.class, () -> new AzureGlobalProperties()) .withConfiguration(AutoConfigurations.of(JmsAutoConfiguration.class, ServiceBusJmsAutoConfiguration.class)); private void testQueueJmsListenerContainerFactoryWithCustomSettings(AssertableApplicationContext loaded) { @@ -118,8 +117,8 @@ void contextFailedByPricingTierNotCorrectlyConfigured(String pricingTier) { } @ParameterizedTest - @ValueSource(strings = { "premium" }) - void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier) { + @ValueSource(strings = { "standard" }) + void autoconfigurationEnabledAndContextSuccessWithStandardTier(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier, @@ -137,8 +136,8 @@ void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier } @ParameterizedTest - @ValueSource(strings = { "standard" }) - void autoconfigurationEnabledAndContextSuccessWithStandardTier(String pricingTier) { + @ValueSource(strings = { "premium" }) + void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier) { this.contextRunner .withPropertyValues( "spring.jms.servicebus.pricing-tier=" + pricingTier, @@ -242,7 +241,7 @@ void jmsPropertiesConfiguredCorrectly(String pricingTier) { assertThat(context).hasSingleBean(JmsProperties.class); JmsProperties jmsProperties = context.getBean(JmsProperties.class); assertThat(jmsProperties.getListener().isAutoStartup()).isFalse(); - assertThat(jmsProperties.getListener().getAcknowledgeMode()).isEqualTo(CLIENT); + assertThat(jmsProperties.getListener().getAcknowledgeMode().getMode()).isEqualTo((Session.CLIENT_ACKNOWLEDGE)); assertThat(jmsProperties.getListener().formatConcurrency()).isEqualTo("2-10"); assertThat(jmsProperties.getListener().getReceiveTimeout()).isEqualTo(Duration.ofSeconds(2)); assertThat(jmsProperties.getListener().getMaxConcurrency()).isEqualTo(10); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsPasswordlessConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsPasswordlessConfigurationTest.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsPasswordlessConfigurationTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsPasswordlessConfigurationTest.java index d586cebfd201..73b40323cfbf 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsPasswordlessConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/ServiceBusJmsPasswordlessConfigurationTest.java @@ -1,10 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; +import com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsConnectionFactoryCustomizer; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.MockedConstruction; @@ -56,6 +57,7 @@ void testPropertyEnabledIsTrue() { .withBean(AzureGlobalProperties.class, () -> azureProperties) .run(context -> { assertThat(context).hasSingleBean(AzureServiceBusJmsCredentialSupplier.class); + assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactoryCustomizer.class); }); } @@ -89,6 +91,7 @@ void testServiceBusPasswordlessProperties() { .withBean(AzureGlobalProperties.class, () -> azureProperties) .run(context -> { assertThat(context).hasSingleBean(AzureServiceBusJmsCredentialSupplier.class); + assertThat(context).hasSingleBean(ServiceBusJmsConnectionFactoryCustomizer.class); AzureServiceBusJmsProperties properties = context.getBean(AzureServiceBusJmsProperties.class); assertThat(properties.getScopes()).isEqualTo("scopes"); assertThat(properties.getProfile().getTenantId()).isEqualTo("tenant-id"); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsPropertiesTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsPropertiesTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsPropertiesTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsPropertiesTests.java index fff6275c6c85..334323482132 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/AzureServiceBusJmsPropertiesTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/jms/properties/AzureServiceBusJmsPropertiesTests.java @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.jms; +package com.azure.spring.cloud.autoconfigure.implementation.jms.properties; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.logging.LogLevel; -import com.azure.spring.cloud.autoconfigure.jms.properties.AzureServiceBusJmsProperties; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.NullAndEmptySource; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractAzureKafkaOAuth2AutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractAzureKafkaOAuth2AutoConfigurationTests.java similarity index 85% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractAzureKafkaOAuth2AutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractAzureKafkaOAuth2AutoConfigurationTests.java index e2f5b2dd2b54..8db03b2059dc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractAzureKafkaOAuth2AutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractAzureKafkaOAuth2AutoConfigurationTests.java @@ -1,20 +1,19 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.junit.jupiter.api.Test; - import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.ApplicationContext; import java.util.Map; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.AZURE_CONFIGURED_JAAS_OPTIONS_KEY; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.AZURE_CONFIGURED_JAAS_OPTIONS_VALUE; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.SASL_LOGIN_CALLBACK_HANDLER_CLASS_OAUTH; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.SASL_MECHANISM_OAUTH; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.SECURITY_PROTOCOL_CONFIG_SASL; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.AZURE_CONFIGURED_JAAS_OPTIONS_KEY; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.AZURE_CONFIGURED_JAAS_OPTIONS_VALUE; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.SASL_LOGIN_CALLBACK_HANDLER_CLASS_OAUTH; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.SASL_MECHANISM_OAUTH; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.SECURITY_PROTOCOL_CONFIG_SASL; import static org.apache.kafka.clients.CommonClientConfigs.SECURITY_PROTOCOL_CONFIG; import static org.apache.kafka.common.config.SaslConfigs.SASL_JAAS_CONFIG; import static org.apache.kafka.common.config.SaslConfigs.SASL_LOGIN_CALLBACK_HANDLER_CLASS; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractKafkaPropertiesBeanPostProcessorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractKafkaPropertiesBeanPostProcessorTest.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractKafkaPropertiesBeanPostProcessorTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractKafkaPropertiesBeanPostProcessorTest.java index d7dc5a25ed30..fbbf00601f2c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AbstractKafkaPropertiesBeanPostProcessorTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AbstractKafkaPropertiesBeanPostProcessorTest.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import org.apache.kafka.common.message.ApiVersionsRequestData; import org.apache.kafka.common.requests.ApiVersionsRequest; @@ -13,8 +13,8 @@ import java.util.Map; import java.util.Optional; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.SASL_MECHANISM_OAUTH; -import static com.azure.spring.cloud.autoconfigure.kafka.AbstractKafkaPropertiesBeanPostProcessor.SECURITY_PROTOCOL_CONFIG_SASL; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.SASL_MECHANISM_OAUTH; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.AbstractKafkaPropertiesBeanPostProcessor.SECURITY_PROTOCOL_CONFIG_SASL; import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.AZURE_SPRING_EVENT_HUBS_KAFKA_OAUTH; import static com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier.VERSION; import static org.apache.kafka.clients.CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java index e29c31335fd7..7b1186f5a435 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; - -import java.util.Map; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -14,8 +12,10 @@ import org.springframework.context.support.ConversionServiceFactoryBean; import org.springframework.integration.support.utils.IntegrationUtils; -import static com.azure.spring.cloud.autoconfigure.kafka.BindingServicePropertiesBeanPostProcessor.KAFKA_OAUTH2_SPRING_MAIN_SOURCES; -import static com.azure.spring.cloud.autoconfigure.kafka.BindingServicePropertiesBeanPostProcessor.SPRING_MAIN_SOURCES_PROPERTY; +import java.util.Map; + +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.BindingServicePropertiesBeanPostProcessor.KAFKA_OAUTH2_SPRING_MAIN_SOURCES; +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.BindingServicePropertiesBeanPostProcessor.SPRING_MAIN_SOURCES_PROPERTY; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaOAuth2BinderConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaOAuth2BinderConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaOAuth2BinderConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaOAuth2BinderConfigurationTests.java index ade382a2b116..a4f4a4a12a75 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaOAuth2BinderConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaOAuth2BinderConfigurationTests.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import com.azure.core.credential.TokenCredential; import com.azure.identity.DefaultAzureCredential; import com.azure.identity.ManagedIdentityCredential; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.credential.AzureCredentialResolver; import com.azure.spring.cloud.service.implementation.kafka.KafkaOAuth2AuthenticateCallbackHandler; import com.azure.spring.cloud.service.implementation.passwordless.AzurePasswordlessProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaOAuth2BootConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaOAuth2BootConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaOAuth2BootConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaOAuth2BootConfigurationTests.java index 18ca365f99da..0f018403653f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureKafkaOAuth2BootConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/AzureKafkaOAuth2BootConfigurationTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import com.azure.core.credential.TokenCredential; import com.azure.identity.DefaultAzureCredential; import com.azure.identity.ManagedIdentityCredential; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.credential.AzureCredentialResolver; import com.azure.spring.cloud.service.implementation.kafka.KafkaOAuth2AuthenticateCallbackHandler; import com.azure.spring.cloud.service.implementation.passwordless.AzurePasswordlessProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/BindingServicePropertiesBeanPostProcessorTest.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/BindingServicePropertiesBeanPostProcessorTest.java index 989061191164..3c5539d89869 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/BindingServicePropertiesBeanPostProcessorTest.java @@ -1,18 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; import org.junit.jupiter.api.Test; - import org.springframework.cloud.stream.config.BinderProperties; import org.springframework.cloud.stream.config.BindingServiceProperties; import org.springframework.util.StringUtils; -import static com.azure.spring.cloud.autoconfigure.kafka.BindingServicePropertiesBeanPostProcessor.KAFKA_OAUTH2_SPRING_MAIN_SOURCES; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +import static com.azure.spring.cloud.autoconfigure.implementation.kafka.BindingServicePropertiesBeanPostProcessor.KAFKA_OAUTH2_SPRING_MAIN_SOURCES; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertSame; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessorTest.java similarity index 77% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessorTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessorTest.java index 69d82dc79a0d..54288875b0bc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessorTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaBinderConfigurationPropertiesBeanPostProcessorTest.java @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties; class KafkaBinderConfigurationPropertiesBeanPostProcessorTest diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaPropertiesBeanPostProcessorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaPropertiesBeanPostProcessorTest.java similarity index 66% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaPropertiesBeanPostProcessorTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaPropertiesBeanPostProcessorTest.java index 426d9735458c..da342aaca895 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/KafkaPropertiesBeanPostProcessorTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/kafka/KafkaPropertiesBeanPostProcessorTest.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.kafka; +package com.azure.spring.cloud.autoconfigure.implementation.kafka; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import org.springframework.boot.autoconfigure.kafka.KafkaProperties; -public class KafkaPropertiesBeanPostProcessorTest +class KafkaPropertiesBeanPostProcessorTest extends AbstractKafkaPropertiesBeanPostProcessorTest { KafkaPropertiesBeanPostProcessorTest() { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultAutoConfigurationTests.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultAutoConfigurationTests.java index 8db9c8f7218d..06cd1c40f2dc 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault; import com.azure.security.keyvault.certificates.CertificateAsyncClient; import com.azure.security.keyvault.certificates.CertificateClient; @@ -9,9 +9,9 @@ import com.azure.security.keyvault.secrets.SecretAsyncClient; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import com.azure.spring.cloud.service.implementation.keyvault.certificates.CertificateClientBuilderFactory; import com.azure.spring.cloud.service.implementation.keyvault.secrets.SecretClientBuilderFactory; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultConfigurationTests.java index 52afa430abdf..551e88e6fc52 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/AzureKeyVaultConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/AzureKeyVaultConfigurationTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault; import com.azure.core.management.AzureEnvironment; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.common.AzureKeyVaultProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/AzureKeyVaultCertificateAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/certificates/AzureKeyVaultCertificateAutoConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/AzureKeyVaultCertificateAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/certificates/AzureKeyVaultCertificateAutoConfigurationTests.java index b67c3378aa67..33543a634e2d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/certificates/AzureKeyVaultCertificateAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/certificates/AzureKeyVaultCertificateAutoConfigurationTests.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.certificates; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.security.keyvault.certificates.CertificateAsyncClient; import com.azure.security.keyvault.certificates.CertificateClient; import com.azure.security.keyvault.certificates.CertificateClientBuilder; import com.azure.security.keyvault.certificates.CertificateServiceVersion; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.properties.AzureKeyVaultCertificateProperties; import com.azure.spring.cloud.service.implementation.keyvault.certificates.CertificateClientBuilderFactory; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultEnvironmentPostProcessorTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultEnvironmentPostProcessorTests.java similarity index 99% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultEnvironmentPostProcessorTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultEnvironmentPostProcessorTests.java index 71e472e28e8b..923d3aa3c5a5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultEnvironmentPostProcessorTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultEnvironmentPostProcessorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultPropertySourceProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultOperationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultOperationTests.java similarity index 99% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultOperationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultOperationTests.java index 21d7dc0143f4..d337025b07ff 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultOperationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultOperationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultPropertySourceTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultPropertySourceTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultPropertySourceTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultPropertySourceTests.java index 19eee73e47cd..e3a15f3a804a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultPropertySourceTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultPropertySourceTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import org.junit.jupiter.api.AfterEach; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultSecretPropertySourceUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultSecretPropertySourceUserAgentTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultSecretPropertySourceUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultSecretPropertySourceUserAgentTests.java index 9f64cb491049..decfc4a29478 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/environment/KeyVaultSecretPropertySourceUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/environment/KeyVaultSecretPropertySourceUserAgentTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.environment; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment; import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.security.keyvault.secrets.SecretClient; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/AzureKeyVaultSecretAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/secrets/AzureKeyVaultSecretAutoConfigurationTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/AzureKeyVaultSecretAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/secrets/AzureKeyVaultSecretAutoConfigurationTests.java index b8fcdddf74a8..b53ba7442e2b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/keyvault/secrets/AzureKeyVaultSecretAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/keyvault/secrets/AzureKeyVaultSecretAutoConfigurationTests.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.keyvault.secrets; +package com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.security.keyvault.secrets.SecretAsyncClient; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; import com.azure.security.keyvault.secrets.SecretServiceVersion; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultPropertySourceProperties; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; import com.azure.spring.cloud.service.implementation.keyvault.secrets.SecretClientBuilderFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/passwordless/MergeAzureCommonPropertiesTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/MergeAzureCommonPropertiesTest.java similarity index 87% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/passwordless/MergeAzureCommonPropertiesTest.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/MergeAzureCommonPropertiesTest.java index 7ccba25ec033..9b4db99190af 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/passwordless/MergeAzureCommonPropertiesTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/passwordless/MergeAzureCommonPropertiesTest.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.passwordless; +package com.azure.spring.cloud.autoconfigure.implementation.passwordless; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.jms.properties.AzureServiceBusJmsProperties; import com.azure.spring.cloud.core.implementation.util.AzurePasswordlessPropertiesUtils; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; -import com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -25,12 +25,12 @@ void testGetPropertiesFromGlobalProperties() { globalProperties.getProfile().setSubscriptionId("global-sub"); globalProperties.getProfile().setTenantId("global-tenant-id"); - AzureRedisPasswordlessProperties passwordlessProperties = new AzureRedisPasswordlessProperties(); + AzureServiceBusJmsProperties passwordlessProperties = new AzureServiceBusJmsProperties(); - AzureRedisPasswordlessProperties result = new AzureRedisPasswordlessProperties(); + AzureServiceBusJmsProperties result = new AzureServiceBusJmsProperties(); AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(globalProperties, passwordlessProperties, result); - assertEquals("https://redis.azure.com/.default", result.getScopes()); + assertEquals("https://servicebus.azure.net/.default", result.getScopes()); assertEquals("global-client-id", result.getCredential().getClientId()); assertEquals("global-client-secret", result.getCredential().getClientSecret()); assertEquals("global-password", result.getCredential().getPassword()); @@ -45,7 +45,7 @@ void testGetPropertiesFromGlobalProperties() { void testGetPropertiesFromAzurePasswordlessProperties() { AzureGlobalProperties globalProperties = new AzureGlobalProperties(); - AzureRedisPasswordlessProperties passwordlessProperties = new AzureRedisPasswordlessProperties(); + AzureServiceBusJmsProperties passwordlessProperties = new AzureServiceBusJmsProperties(); passwordlessProperties.setScopes("scopes-us-gov"); passwordlessProperties.getCredential().setClientId("client-id"); passwordlessProperties.getCredential().setClientSecret("client-secret"); @@ -56,7 +56,7 @@ void testGetPropertiesFromAzurePasswordlessProperties() { passwordlessProperties.getProfile().setSubscriptionId("sub"); passwordlessProperties.getProfile().setTenantId("tenant-id"); - AzureRedisPasswordlessProperties result = new AzureRedisPasswordlessProperties(); + AzureServiceBusJmsProperties result = new AzureServiceBusJmsProperties(); AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(globalProperties, passwordlessProperties, result); assertEquals("scopes-us-gov", result.getScopes()); @@ -89,7 +89,7 @@ void testGetPropertiesFromGlobalAndPasswordlessProperties() { globalProperties.getProxy().setHostname("global-proxy-hostname"); globalProperties.getProxy().setPort(1111); - AzureRedisPasswordlessProperties passwordlessProperties = new AzureRedisPasswordlessProperties(); + AzureServiceBusJmsProperties passwordlessProperties = new AzureServiceBusJmsProperties(); passwordlessProperties.setScopes("scope"); passwordlessProperties.getCredential().setClientSecret("client-secret"); passwordlessProperties.getCredential().setPassword("password"); @@ -97,7 +97,7 @@ void testGetPropertiesFromGlobalAndPasswordlessProperties() { passwordlessProperties.getProfile().setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_US_GOVERNMENT); passwordlessProperties.getProfile().setSubscriptionId("sub"); - AzureRedisPasswordlessProperties result = new AzureRedisPasswordlessProperties(); + AzureServiceBusJmsProperties result = new AzureServiceBusJmsProperties(); AzurePasswordlessPropertiesUtils.mergeAzureCommonProperties(globalProperties, passwordlessProperties, result); assertEquals("scope", result.getScopes()); diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/redis/AzureRedisAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisAutoConfigurationTests.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/redis/AzureRedisAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisAutoConfigurationTests.java index 2dc0ec8bbf05..4ee0959d4f53 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/redis/AzureRedisAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/AzureRedisAutoConfigurationTests.java @@ -1,19 +1,22 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.redis; +package com.azure.spring.cloud.autoconfigure.implementation.redis; import com.azure.resourcemanager.AzureResourceManager; import com.azure.resourcemanager.redis.models.RedisAccessKeys; import com.azure.resourcemanager.redis.models.RedisCache; import com.azure.resourcemanager.redis.models.RedisCaches; -import com.azure.spring.cloud.autoconfigure.implementation.redis.AzureRedisProperties; +import com.azure.spring.cloud.autoconfigure.implementation.redis.properties.AzureRedisProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.data.redis.core.RedisOperations; +import org.springframework.util.ReflectionUtils; + +import java.lang.reflect.Method; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; @@ -107,7 +110,22 @@ void shouldConfigureWithNameAndResourceGroupAndResourceManager() { assertThat(redisProperties.getPassword()).isEqualTo(KEY); assertThat(redisProperties.getHost()).isEqualTo(HOST); assertThat(redisProperties.getPort()).isEqualTo(PORT); - assertThat(redisProperties.isSsl()).isEqualTo(IS_SSL); + Method isSsl = ReflectionUtils.findMethod(RedisProperties.class, "isSsl"); + if (isSsl == null) { + Object ssl = ReflectionUtils.findMethod(RedisProperties.class, "getSsl").invoke(redisProperties); + Class[] innerClasses = RedisProperties.class.getDeclaredClasses(); + Class targetInnerClass = null; + for (Class innerClass : innerClasses) { + if (innerClass.getSimpleName().equals("Ssl")) { + targetInnerClass = innerClass; + break; + } + } + assertThat(ReflectionUtils.findMethod(targetInnerClass, "isEnabled") + .invoke(ssl).equals(IS_SSL)); + } else { + assertThat(isSsl.invoke(redisProperties).equals(IS_SSL)); + } }); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnectionFactoryTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnectionFactoryTest.java deleted file mode 100644 index da81d1cd6f1a..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureJedisConnectionFactoryTest.java +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis; - -import com.azure.spring.cloud.core.implementation.util.ReflectionUtils; -import org.apache.commons.pool2.impl.GenericObjectPoolConfig; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.MockedConstruction; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisPassword; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; -import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisClientConfig; -import redis.clients.jedis.JedisPoolConfig; -import redis.clients.jedis.util.Pool; - -import java.time.Duration; -import java.util.Optional; -import java.util.function.Supplier; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.mockConstruction; -import static org.mockito.Mockito.when; - -class AzureJedisConnectionFactoryTest { - - private RedisStandaloneConfiguration standaloneConfig; - private JedisClientConfiguration clientConfiguration; - private Supplier credentialSupplier; - - @Test - void testFetchJedisConnectorWithNoPool() { - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - - try (MockedConstruction jedisMockedConstruction = mockConstruction(Jedis.class, - (jedisMocker, context) -> { - when(jedisMocker.isConnected()).thenReturn(true); - when(jedisMocker.get("fake-key")).thenReturn("fake-value"); - - Jedis jedis = azureJedisConnectionFactory.fetchJedisConnector(); - - Assertions.assertEquals(jedisMocker, jedis); - })) { - Assertions.assertEquals(0, jedisMockedConstruction.constructed().size()); - } - } - - @Test - @SuppressWarnings("unchecked") - void testFetchJedisConnectorWithPool() { - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.isUsePooling()).thenReturn(true); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Jedis mockJedis = mock(Jedis.class); - Pool mockPool = mock(Pool.class); - when(mockPool.getResource()).thenReturn(mockJedis); - azureJedisConnectionFactory.setPool(mockPool); - - Jedis jedis = azureJedisConnectionFactory.fetchJedisConnector(); - - Assertions.assertEquals(mockJedis, jedis); - - } - - @Test - void testGetConnection() { - standaloneConfig = mock(RedisStandaloneConfiguration.class); - when(standaloneConfig.getUsername()).thenReturn("fake-userName"); - when(standaloneConfig.getPassword()).thenReturn(RedisPassword.none()); - - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.getClientName()).thenReturn(Optional.of("fake-clientName")); - when(clientConfiguration.isUsePooling()).thenReturn(false); - - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - - try (MockedConstruction jedisMockedConstruction = mockConstruction(Jedis.class, - (jedisMocker, context) -> { - - RedisConnection connection = azureJedisConnectionFactory.getConnection(); - - Assertions.assertNotNull(connection); - Assertions.assertEquals("fake-clientName", connection.getClientName()); - - })) { - Assertions.assertEquals(0, jedisMockedConstruction.constructed().size()); - } - } - - @Test - void testGetConnectionWithoutInit() { - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Assertions.assertThrows(IllegalStateException.class, () -> { - azureJedisConnectionFactory.getConnection(); - }); - } - - @Test - @SuppressWarnings("unchecked") - void testAfterPropertiesSet() { - standaloneConfig = mock(RedisStandaloneConfiguration.class); - when(standaloneConfig.getUsername()).thenReturn("fake-userName"); - when(standaloneConfig.getPassword()).thenReturn(RedisPassword.none()); - - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.getClientName()).thenReturn(Optional.of("fake-clientName")); - when(clientConfiguration.isUsePooling()).thenReturn(true); - when(clientConfiguration.getPoolConfig()).thenReturn(Optional.of(new JedisPoolConfig())); - - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - - JedisClientConfig jedisClientConfig = (JedisClientConfig) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "jedisClientConfig", azureJedisConnectionFactory); - Boolean initialized = (Boolean) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "initialized", azureJedisConnectionFactory); - Pool pool = (Pool) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "pool", azureJedisConnectionFactory); - - Assertions.assertNull(jedisClientConfig); - Assertions.assertFalse(initialized); - Assertions.assertNull(pool); - - azureJedisConnectionFactory.afterPropertiesSet(); - - jedisClientConfig = (JedisClientConfig) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "jedisClientConfig", azureJedisConnectionFactory); - initialized = (Boolean) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "initialized", azureJedisConnectionFactory); - pool = (Pool) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "pool", azureJedisConnectionFactory); - Assertions.assertNotNull(jedisClientConfig); - Assertions.assertTrue(initialized); - Assertions.assertNotNull(pool); - - } - - @Test - @SuppressWarnings("unchecked") - void testDestroyWithPool() { - - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.isUsePooling()).thenReturn(true); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Pool mockPool = mock(Pool.class); - azureJedisConnectionFactory.setPool(mockPool); - - Boolean destroyed = (Boolean) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "destroyed", azureJedisConnectionFactory); - Pool pool = (Pool) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "pool", azureJedisConnectionFactory); - - Assertions.assertFalse(destroyed); - Assertions.assertEquals(mockPool, pool); - - azureJedisConnectionFactory.destroy(); - - destroyed = (Boolean) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "destroyed", azureJedisConnectionFactory); - pool = (Pool) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "pool", azureJedisConnectionFactory); - - Assertions.assertTrue(destroyed); - Assertions.assertNull(pool); - - } - - @Test - void testTranslateExceptionIfPossible() { - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Assertions.assertThrows(UnsupportedOperationException.class, () -> { - azureJedisConnectionFactory.translateExceptionIfPossible(new RuntimeException()); - }); - - } - - @Test - void testGetClusterConnection() { - - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - - Assertions.assertThrows(UnsupportedOperationException.class, () -> { - azureJedisConnectionFactory.getClusterConnection(); - }); - } - - @Test - void testGetPoolConfig() { - clientConfiguration = mock(JedisClientConfiguration.class); - GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig<>(); - when(clientConfiguration.getPoolConfig()).thenReturn(Optional.of(poolConfig)); - - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", azureJedisConnectionFactory); - Assertions.assertEquals(poolConfig, jedisClientConfiguration.getPoolConfig().get()); - } - - @Test - void testGetConvertPipelineAndTxResults() { - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Assertions.assertTrue(azureJedisConnectionFactory.getConvertPipelineAndTxResults()); - } - - @Test - void testGetSentinelConnection() { - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Assertions.assertThrows(UnsupportedOperationException.class, () -> { - azureJedisConnectionFactory.getSentinelConnection(); - }); - } - - @Test - void testGetUsePool() { - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.isUsePooling()).thenReturn(true); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Assertions.assertTrue(azureJedisConnectionFactory.getUsePool()); - - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.isUsePooling()).thenReturn(false); - azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - Assertions.assertFalse(azureJedisConnectionFactory.getUsePool()); - } - - @Test - void testGetDatabase() { - standaloneConfig = mock(RedisStandaloneConfiguration.class); - when(standaloneConfig.getDatabase()).thenReturn(7); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - RedisStandaloneConfiguration cf = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", azureJedisConnectionFactory); - - Assertions.assertEquals(7, cf.getDatabase()); - } - - @Test - void testSetConvertPipelineAndTxResults() { - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - - azureJedisConnectionFactory.setConvertPipelineAndTxResults(false); - Assertions.assertFalse(azureJedisConnectionFactory.getConvertPipelineAndTxResults()); - - azureJedisConnectionFactory.setConvertPipelineAndTxResults(true); - Assertions.assertTrue(azureJedisConnectionFactory.getConvertPipelineAndTxResults()); - } - - - @Test - void testIsUseSsl() { - clientConfiguration = mock(JedisClientConfiguration.class); - - when(clientConfiguration.isUseSsl()).thenReturn(true); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - JedisClientConfiguration cf = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", azureJedisConnectionFactory); - - Assertions.assertEquals(true, cf.isUseSsl()); - - when(clientConfiguration.isUseSsl()).thenReturn(false); - azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - cf = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", azureJedisConnectionFactory); - - Assertions.assertEquals(false, cf.isUseSsl()); - } - - @Test - void testGetHostName() { - standaloneConfig = mock(RedisStandaloneConfiguration.class); - when(standaloneConfig.getHostName()).thenReturn("fake-host-name"); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - RedisStandaloneConfiguration cf = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", azureJedisConnectionFactory); - - Assertions.assertEquals("fake-host-name", cf.getHostName()); - } - - @Test - void testGetClientName() { - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.getClientName()).thenReturn(Optional.of("fake-clientName")); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - JedisClientConfiguration jedisClientConfig = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", azureJedisConnectionFactory); - - Assertions.assertEquals("fake-clientName", jedisClientConfig.getClientName().get()); - } - - @Test - void testGetTimeout() { - clientConfiguration = mock(JedisClientConfiguration.class); - when(clientConfiguration.getReadTimeout()).thenReturn(Duration.ofSeconds(23)); - AzureJedisConnectionFactory azureJedisConnectionFactory = new AzureJedisConnectionFactory(standaloneConfig, clientConfiguration, credentialSupplier); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisAutoConfigurationTestContainerTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisAutoConfigurationTestContainerTest.java deleted file mode 100644 index 469a1702c6a5..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisAutoConfigurationTestContainerTest.java +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis; - -import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; -import com.azure.spring.cloud.autoconfigure.redis.AzureJedisPasswordlessAutoConfiguration; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.GenericContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; - -import java.util.HashMap; -import java.util.Map; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -@Testcontainers -@Disabled("Disable for Container startup failed") -@TestMethodOrder(MethodOrderer.OrderAnnotation.class) -public class AzureRedisAutoConfigurationTestContainerTest { - - @Autowired - private RedisTemplate redisTemplate; - - private static final String REDIS_PASSWORD = "fake-testcontainer-password"; - - @Container - private static GenericContainer redis = - new GenericContainer<>(DockerImageName.parse("redis:5.0.3-alpine")) - .withCommand("--requirepass", REDIS_PASSWORD) - .withExposedPorts(6379); - - - @DynamicPropertySource - static void redisProperties(DynamicPropertyRegistry registry) { - registry.add("spring.redis.host", redis::getHost); - registry.add("spring.redis.port", redis::getFirstMappedPort); - registry.add("spring.redis.ssl", () -> false); - registry.add("spring.redis.azure.passwordless-enabled", () -> true); - } - - @Test - @Order(1) - void testSetAndGet() { - - Map valueMap = new HashMap<>(); - valueMap.put("valueMap1", "map1"); - valueMap.put("valueMap2", "map2"); - valueMap.put("valueMap3", "map3"); - redisTemplate.opsForValue().multiSet(valueMap); - String value = (String) redisTemplate.opsForValue().get("valueMap2"); - Assertions.assertEquals("map2", value); - } - - @Test - @Order(2) - void testGetVauleAfterSet() { - String value = (String) redisTemplate.opsForValue().get("valueMap3"); - Assertions.assertEquals("map3", value); - } - - - @Configuration - @Import({AzureJedisPasswordlessAutoConfiguration.class, RedisAutoConfiguration.class}) - static class AzureRedisPasswordlessTestConfig { - - } - - @Configuration - static class SupplierConfig { - - @Bean - AzureRedisCredentialSupplier azureRedisCredentialSupplier() { - AzureAuthenticationTemplate template = mock(AzureAuthenticationTemplate.class); - when(template.getTokenAsPassword()).thenReturn(REDIS_PASSWORD); - return new AzureRedisCredentialSupplier(template); - } - } - -} - - diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisCredentialSupplierTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisCredentialSupplierTest.java deleted file mode 100644 index 0b71a27f80df..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/redis/passwordless/data/jedis/AzureRedisCredentialSupplierTest.java +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis; - -import com.azure.identity.extensions.implementation.template.AzureAuthenticationTemplate; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -class AzureRedisCredentialSupplierTest { - - @Test - void testGet() { - AzureAuthenticationTemplate template = mock(AzureAuthenticationTemplate.class); - when(template.getTokenAsPassword()).thenReturn("fake-password"); - - AzureRedisCredentialSupplier supplier = new AzureRedisCredentialSupplier(template); - Assertions.assertEquals("fake-password", supplier.get()); - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureEventHubsResourceManagerAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureEventHubsResourceManagerAutoConfigurationTests.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureEventHubsResourceManagerAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureEventHubsResourceManagerAutoConfigurationTests.java index a6d1922980b1..bef554db47ac 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureEventHubsResourceManagerAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureEventHubsResourceManagerAutoConfigurationTests.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; -import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.EventHubsResourceMetadata; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.EventHubsArmConnectionStringProvider; -import com.azure.spring.cloud.resourcemanager.provisioning.EventHubsProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.EventHubsProvisioner; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureResourceManagerAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureResourceManagerAutoConfigurationTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureResourceManagerAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureResourceManagerAutoConfigurationTests.java index b218567b1d1c..45c5f96a996f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureResourceManagerAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureResourceManagerAutoConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.core.management.profile.AzureProfile; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.properties.resource.AzureResourceMetadata; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceBusResourceManagerAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceBusResourceManagerAutoConfigurationTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceBusResourceManagerAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceBusResourceManagerAutoConfigurationTests.java index 44798ab8acd4..05669cafdb3a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureServiceBusResourceManagerAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureServiceBusResourceManagerAutoConfigurationTests.java @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.ServiceBusResourceMetadata; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.ServiceBusArmConnectionStringProvider; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.ServiceBusProvisioner; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureStorageQueueResourceManagerAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureStorageQueueResourceManagerAutoConfigurationTests.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureStorageQueueResourceManagerAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureStorageQueueResourceManagerAutoConfigurationTests.java index b05d9b3db231..31dfa2aed298 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/resourcemanager/AzureStorageQueueResourceManagerAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/resourcemanager/AzureStorageQueueResourceManagerAutoConfigurationTests.java @@ -1,11 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.resourcemanager; +package com.azure.spring.cloud.autoconfigure.implementation.resourcemanager; import com.azure.resourcemanager.AzureResourceManager; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.StorageQueueResourceMetadata; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; import com.azure.spring.cloud.resourcemanager.implementation.connectionstring.StorageQueueArmConnectionStringProvider; import com.azure.storage.queue.QueueServiceClientBuilder; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfigurationTests.java index ed193f64ca35..92b4aff290d7 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusAutoConfigurationTests.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.core.amqp.AmqpTransportType; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.models.ServiceBusReceiveMode; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.cloud.core.properties.profile.AzureEnvironmentProperties; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; @@ -25,14 +25,11 @@ import static com.azure.messaging.servicebus.models.SubQueue.DEAD_LETTER_QUEUE; import static com.azure.messaging.servicebus.models.SubQueue.TRANSFER_DEAD_LETTER_QUEUE; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -/** - * - */ class AzureServiceBusAutoConfigurationTests extends AbstractAzureServiceConfigurationTests< ServiceBusClientBuilderFactory, AzureServiceBusProperties> { @@ -99,7 +96,6 @@ void configureAzureServiceBusPropertiesWithGlobalDefaults() { assertThat(properties.getProfile().getCloudType()).isEqualTo(AzureProfileOptionsProvider.CloudType.AZURE); assertThat(properties.getProfile().getEnvironment().getServiceBusDomainName()).isEqualTo(AzureEnvironmentProperties.AZURE.getServiceBusDomainName()); assertThat(properties.getDomainName()).isEqualTo(AzureEnvironmentProperties.AZURE.getServiceBusDomainName()); - }); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusClientBuilderConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfigurationTests.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusClientBuilderConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfigurationTests.java index 105f2398db6a..e81ca568c79b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusClientBuilderConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusClientBuilderConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.core.service.AzureServiceType; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusClientBuilderFactory; @@ -14,7 +14,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureServiceBusClientBuilderConfigurationTests { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusConsumerClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerClientConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusConsumerClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerClientConfigurationTests.java index d4850f7f5227..f771fc58b8e3 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusConsumerClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusConsumerClientConfigurationTests.java @@ -1,18 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.ServiceBusReceiverClient; import com.azure.messaging.servicebus.ServiceBusSessionReceiverClient; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureServiceBusConsumerClientConfigurationTests { @@ -139,7 +139,7 @@ void subscriptionNameProvidedShouldNotConfigure() { ) .withUserConfiguration(AzureServiceBusPropertiesTestConfiguration.class) .withBean(ServiceBusClientBuilder.class, () -> serviceBusClientBuilder) - .run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusProcessorClientConfiguration.class)); + .run(context -> assertThat(context).doesNotHaveBean(AzureServiceBusConsumerClientConfiguration.class)); } @Test diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusMessagingAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusMessagingAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfigurationTests.java index df778c58538c..3eda258f3f2b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusMessagingAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusMessagingAutoConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.spring.messaging.servicebus.core.ServiceBusProcessorFactory; import com.azure.spring.messaging.servicebus.core.ServiceBusTemplate; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -13,7 +13,7 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalStateException; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProcessorClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorClientConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProcessorClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorClientConfigurationTests.java index 0c9bdc56b944..eb859eba0763 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProcessorClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProcessorClientConfigurationTests.java @@ -1,22 +1,22 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.ServiceBusProcessorClient; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusSessionProcessorClientBuilderFactory; +import com.azure.spring.cloud.service.implementation.servicebus.lifecycle.ServiceBusProcessorClientLifecycleManager; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusErrorHandler; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusRecordMessageListener; -import com.azure.spring.cloud.service.implementation.servicebus.lifecycle.ServiceBusProcessorClientLifecycleManager; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProducerClientConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProducerClientConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfigurationTests.java index cb6f5a001d92..593f254fcc10 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusProducerClientConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusProducerClientConfigurationTests.java @@ -1,18 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.ServiceBusSenderClient; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusSenderClientBuilderFactory; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; class AzureServiceBusProducerClientConfigurationTests { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusPropertiesTestConfiguration.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusPropertiesTestConfiguration.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusPropertiesTestConfiguration.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusPropertiesTestConfiguration.java index b3ee50e5c924..95413f523b3e 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusPropertiesTestConfiguration.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusPropertiesTestConfiguration.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusTemplateConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusTemplateConfigurationTests.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusTemplateConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusTemplateConfigurationTests.java index 6ab2a3d205bf..da921959de61 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/AzureServiceBusTemplateConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/AzureServiceBusTemplateConfigurationTests.java @@ -1,17 +1,17 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; import com.azure.spring.messaging.servicebus.core.ServiceBusTemplate; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import static com.azure.spring.cloud.autoconfigure.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; +import static com.azure.spring.cloud.autoconfigure.implementation.servicebus.ServiceBusTestUtils.CONNECTION_STRING_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.Mockito.mock; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/ServiceBusTestUtils.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/ServiceBusTestUtils.java similarity index 80% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/ServiceBusTestUtils.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/ServiceBusTestUtils.java index 57574ab37e4c..e5438472c72d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/ServiceBusTestUtils.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/ServiceBusTestUtils.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus; abstract class ServiceBusTestUtils { diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/TestServiceBusRecordMessageListener.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/configuration/TestServiceBusRecordMessageListener.java similarity index 84% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/TestServiceBusRecordMessageListener.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/configuration/TestServiceBusRecordMessageListener.java index 40a91e482a6a..a624083aa918 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/servicebus/TestServiceBusRecordMessageListener.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/configuration/TestServiceBusRecordMessageListener.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.servicebus.configuration; import com.azure.messaging.servicebus.ServiceBusReceivedMessageContext; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusRecordMessageListener; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageAutoConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageAutoConfigurationTests.java index f5581c8fffa7..8e891c6b556f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageAutoConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage; +package com.azure.spring.cloud.autoconfigure.implementation.storage; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.storage.fileshare.AzureStorageFileShareAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.storage.queue.AzureStorageQueueAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.AzureStorageFileShareAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration; import com.azure.spring.cloud.service.implementation.storage.blob.BlobServiceClientBuilderFactory; import com.azure.spring.cloud.service.implementation.storage.fileshare.ShareServiceClientBuilderFactory; import com.azure.spring.cloud.service.implementation.storage.queue.QueueServiceClientBuilderFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageConfigurationTests.java index abb6cad6574c..5ac2699497fe 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageConfigurationTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage; +package com.azure.spring.cloud.autoconfigure.implementation.storage; import com.azure.core.management.AzureEnvironment; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.common.AzureStorageProperties; import com.azure.spring.cloud.core.provider.RetryOptionsProvider; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageQueueMessagingAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageQueueMessagingAutoConfigurationTests.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageQueueMessagingAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageQueueMessagingAutoConfigurationTests.java index 26937c5d88bb..981d4cd400a1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/AzureStorageQueueMessagingAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/AzureStorageQueueMessagingAutoConfigurationTests.java @@ -1,10 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage; +package com.azure.spring.cloud.autoconfigure.implementation.storage; +import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueMessagingAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; -import com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter; +import com.azure.spring.messaging.storage.queue.implementation.support.converter.StorageQueueMessageConverter; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobAutoConfigurationTests.java index 499f093c0f55..8337270ee22a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobAutoConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.blob; +package com.azure.spring.cloud.autoconfigure.implementation.storage.blob; import com.azure.data.appconfiguration.ConfigurationClientBuilder; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.properties.AzureStorageBlobProperties; import com.azure.spring.cloud.service.implementation.storage.blob.BlobServiceClientBuilderFactory; import com.azure.storage.blob.BlobAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobResourceAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobResourceAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobResourceAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobResourceAutoConfigurationTests.java index 47b38e136454..acf5f4b088c1 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/blob/AzureStorageBlobResourceAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/AzureStorageBlobResourceAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.blob; +package com.azure.spring.cloud.autoconfigure.implementation.storage.blob; import com.azure.spring.cloud.core.resource.AzureStorageBlobProtocolResolver; import org.junit.jupiter.params.ParameterizedTest; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareAutoConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareAutoConfigurationTests.java index 01ab5a322dbc..f9d2b24fc583 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareAutoConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.fileshare; +package com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare; import com.azure.data.appconfiguration.ConfigurationClientBuilder; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.properties.AzureStorageFileShareProperties; import com.azure.spring.cloud.service.implementation.storage.fileshare.ShareServiceClientBuilderFactory; import com.azure.storage.file.share.ShareAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareResourceAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareResourceAutoConfigurationTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareResourceAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareResourceAutoConfigurationTests.java index e09b8aa46f1b..3a3aab59ef43 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/fileshare/AzureStorageFileShareResourceAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/fileshare/AzureStorageFileShareResourceAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.fileshare; +package com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare; import com.azure.spring.cloud.core.resource.AzureStorageFileProtocolResolver; import org.junit.jupiter.params.ParameterizedTest; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/queue/AzureStorageQueueAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueAutoConfigurationTests.java similarity index 96% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/queue/AzureStorageQueueAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueAutoConfigurationTests.java index 6fd212483a6c..7570286b9f4c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/storage/queue/AzureStorageQueueAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/storage/queue/AzureStorageQueueAutoConfigurationTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.storage.queue; +package com.azure.spring.cloud.autoconfigure.implementation.storage.queue; import com.azure.data.appconfiguration.ConfigurationClientBuilder; -import com.azure.spring.cloud.autoconfigure.AbstractAzureServiceConfigurationTests; -import com.azure.spring.cloud.autoconfigure.TestBuilderCustomizer; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.AbstractAzureServiceConfigurationTests; +import com.azure.spring.cloud.autoconfigure.implementation.TestBuilderCustomizer; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; import com.azure.spring.cloud.service.implementation.storage.queue.QueueServiceClientBuilderFactory; import com.azure.storage.queue.QueueAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/trace/sleuth/AzureSleuthAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/trace/sleuth/AzureSleuthAutoConfigurationTests.java deleted file mode 100644 index d03b48ba8a03..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/trace/sleuth/AzureSleuthAutoConfigurationTests.java +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.implementation.trace.sleuth; - -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.spring.cloud.autoconfigure.trace.sleuth.AzureSleuthAutoConfiguration; -import com.azure.spring.cloud.core.implementation.trace.AzureHttpClientBuilderFactoryBeanPostProcessor; -import com.azure.spring.cloud.trace.sleuth.SleuthHttpPolicy; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.test.context.FilteredClassLoader; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.cloud.sleuth.Tracer; -import org.springframework.cloud.sleuth.autoconfig.brave.BraveAutoConfiguration; -import org.springframework.cloud.sleuth.autoconfig.instrument.web.TraceWebAutoConfiguration; - -import static com.azure.spring.cloud.autoconfigure.trace.sleuth.AzureSleuthAutoConfiguration.DEFAULT_SLEUTH_HTTP_POLICY_BEAN_NAME; -import static org.assertj.core.api.Assertions.assertThat; - -public class AzureSleuthAutoConfigurationTests { - - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(AzureSleuthAutoConfiguration.class)); - - @Test - public void configureWithoutAzureSleuthDependency() { - this.contextRunner - .withClassLoader(new FilteredClassLoader(SleuthHttpPolicy.class)) - .run(context -> assertThat(context).doesNotHaveBean(HttpPipelinePolicy.class)); - } - - @Test - public void configureWithoutSpringSleuthDependency() { - this.contextRunner - .withClassLoader(new FilteredClassLoader(Tracer.class)) - .run(context -> assertThat(context).doesNotHaveBean(HttpPipelinePolicy.class)); - } - - @Test - public void configureAzureSleuthBean() { - this.contextRunner - .withUserConfiguration(BraveAutoConfiguration.class, TraceWebAutoConfiguration.class) - .run(context -> { - assertThat(context).hasBean(DEFAULT_SLEUTH_HTTP_POLICY_BEAN_NAME); - assertThat(context).hasSingleBean(AzureHttpClientBuilderFactoryBeanPostProcessor.class); - }); - } -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/CosmosUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/CosmosUserAgentTests.java new file mode 100644 index 000000000000..364a9d991d6f --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/CosmosUserAgentTests.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.autoconfigure.implementation.useragent; + +import com.azure.cosmos.CosmosAsyncClient; +import com.azure.cosmos.CosmosClient; +import com.azure.cosmos.CosmosClientBuilder; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.cosmos.AzureCosmosAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; +import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; +import com.azure.spring.cloud.service.implementation.cosmos.CosmosClientBuilderFactory; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import static com.azure.spring.cloud.core.implementation.util.ReflectionUtils.getField; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + + +class CosmosUserAgentTests { + + @Test + void userAgentTest() { + final CosmosClient mockCosmosClient = mock(CosmosClient.class); + final CosmosAsyncClient cosmosAsyncClient = mock(CosmosAsyncClient.class); + new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(AzureCosmosAutoConfiguration.class)) + .withPropertyValues("spring.cloud.azure.cosmos.endpoint=sample") + .withBean(AzureGlobalProperties.class, AzureGlobalProperties::new) + .withBean(CosmosClient.class, () -> mockCosmosClient) + .withBean(CosmosAsyncClient.class, () -> cosmosAsyncClient) + .run(context -> { + assertThat(context).hasSingleBean(AzureCosmosProperties.class); + assertThat(context).hasSingleBean(CosmosClientBuilderFactory.class); + assertThat(context).hasSingleBean(CosmosClientBuilder.class); + assertThat(context).hasSingleBean(CosmosClient.class); + assertThat(context).hasSingleBean(CosmosAsyncClient.class); + + CosmosClientBuilder builder = context.getBean(CosmosClientBuilder.class); + String userAgent = (String) getField(CosmosClientBuilder.class, "userAgentSuffix", builder); + Assertions.assertNotNull(userAgent); + Assertions.assertEquals(AzureSpringIdentifier.AZURE_SPRING_COSMOS, userAgent); + }); + } + +} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/EventHubsUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/EventHubsUserAgentTests.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/EventHubsUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/EventHubsUserAgentTests.java index 9ffa42163c8a..ad27809f91a4 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/EventHubsUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/EventHubsUserAgentTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp; import com.azure.core.util.ClientOptions; import com.azure.messaging.eventhubs.CheckpointStore; @@ -9,9 +9,9 @@ import com.azure.messaging.eventhubs.EventHubConsumerAsyncClient; import com.azure.messaging.eventhubs.EventHubConsumerClient; import com.azure.messaging.eventhubs.EventProcessorClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.eventhubs.TestCheckpointStore; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration.TestCheckpointStore; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsErrorHandler; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsRecordMessageListener; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/EventProcessorUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/EventProcessorUserAgentTests.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/EventProcessorUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/EventProcessorUserAgentTests.java index cd7eff1df734..24089efa2b1b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/EventProcessorUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/EventProcessorUserAgentTests.java @@ -1,16 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp; import com.azure.core.util.ClientOptions; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventProcessorClient; import com.azure.messaging.eventhubs.EventProcessorClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.eventhubs.TestCheckpointStore; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.configuration.TestCheckpointStore; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsErrorHandler; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsRecordMessageListener; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/ServiceBusUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/ServiceBusUserAgentTests.java similarity index 88% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/ServiceBusUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/ServiceBusUserAgentTests.java index bdab94fca87c..7cb2735a1226 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/ServiceBusUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/ServiceBusUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp; import com.azure.core.util.ClientOptions; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusClientBuilderFactory; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusProcessorUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusProcessorUserAgentTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusProcessorUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusProcessorUserAgentTests.java index 59c3151338db..c6054dbcebfd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusProcessorUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusProcessorUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp.servicebus; import com.azure.core.util.ClientOptions; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusProcessorClientBuilderFactory; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusErrorHandler; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusReceiverUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusReceiverUserAgentTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusReceiverUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusReceiverUserAgentTests.java index f1e3cf229507..ccf63986e1c5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusReceiverUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusReceiverUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp.servicebus; import com.azure.core.util.ClientOptions; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusReceiverClientBuilderFactory; import org.junit.jupiter.api.Assertions; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSenderUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSenderUserAgentTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSenderUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSenderUserAgentTests.java index e8a0e6bbc4f3..6b61fccf95be 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSenderUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSenderUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp.servicebus; import com.azure.core.util.ClientOptions; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusSenderClientBuilderFactory; import org.junit.jupiter.api.Assertions; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSessionProcessorUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSessionProcessorUserAgentTests.java similarity index 92% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSessionProcessorUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSessionProcessorUserAgentTests.java index 190604a0cc90..e7cb89636778 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSessionProcessorUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSessionProcessorUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp.servicebus; import com.azure.core.util.ClientOptions; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusSessionProcessorClientBuilderFactory; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusErrorHandler; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSessionReceiverUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSessionReceiverUserAgentTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSessionReceiverUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSessionReceiverUserAgentTests.java index 78ea3e00fb55..b2c2ecf86b21 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/amqp/servicebus/ServiceBusSessionReceiverUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/amqp/servicebus/ServiceBusSessionReceiverUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.amqp.servicebus; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.amqp.servicebus; import com.azure.core.util.ClientOptions; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.servicebus.factory.ServiceBusSessionReceiverClientBuilderFactory; import org.junit.jupiter.api.Assertions; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/AppConfigurationUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/AppConfigurationUserAgentTests.java similarity index 91% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/AppConfigurationUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/AppConfigurationUserAgentTests.java index b30442e098f6..8ccfb411e05a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/AppConfigurationUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/AppConfigurationUserAgentTests.java @@ -1,15 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http; import com.azure.data.appconfiguration.ConfigurationAsyncClient; import com.azure.data.appconfiguration.ConfigurationClient; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.data.appconfiguration.models.ConfigurationSetting; -import com.azure.spring.cloud.autoconfigure.appconfiguration.AzureAppConfigurationAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.appconfiguration.AzureAppConfigurationProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.appconfiguration.ConfigurationClientBuilderFactory; import org.junit.jupiter.api.Disabled; @@ -31,10 +31,10 @@ @Disabled @Isolated("Run this by itself as it captures System.out") @ExtendWith(OutputCaptureExtension.class) -public class AppConfigurationUserAgentTests { +class AppConfigurationUserAgentTests { @Test - public void userAgentTest(CapturedOutput output) { + void userAgentTest(CapturedOutput output) { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureAppConfigurationAutoConfiguration.class)) .withPropertyValues( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/EventGridUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/EventGridUserAgentTests.java similarity index 89% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/EventGridUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/EventGridUserAgentTests.java index 2d4f683d87ba..376f26be4f7b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/EventGridUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/EventGridUserAgentTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http; -package com.azure.spring.cloud.autoconfigure.useragent.http; import com.azure.core.util.BinaryData; import com.azure.messaging.eventgrid.EventGridEvent; import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient; import com.azure.messaging.eventgrid.EventGridPublisherClient; import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; import com.azure.spring.cloud.autoconfigure.implementation.eventgrid.AzureEventGridAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventgrid.properties.AzureEventGridProperties; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; @@ -20,7 +20,6 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; - import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -51,9 +50,12 @@ void userAgentTest(CapturedOutput output) { assertThat(context).hasSingleBean(EventGridPublisherClient.class); assertThat(context).hasSingleBean(EventGridPublisherAsyncClient.class); - EventGridPublisherClient eventGridPublisherClient = (EventGridPublisherClient) context.getBean(EventGridPublisherClient.class); + EventGridPublisherClient eventGridPublisherClient = + (EventGridPublisherClient) context.getBean(EventGridPublisherClient.class); try { - EventGridEvent event = new EventGridEvent("A user is created", "User.Created.Object", BinaryData.fromObject("user1"), "0.1"); // topic must be set when sending to an Event Grid Domain. + EventGridEvent event = new EventGridEvent("A user is created", "User.Created.Object", + BinaryData.fromObject("user1"), "0.1"); // topic must be set when sending to an Event Grid + // Domain. eventGridPublisherClient.sendEvent(event); } catch (Exception exception) { // Eat it because we just want the log. diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/IdentityUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/IdentityUserAgentTests.java similarity index 93% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/IdentityUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/IdentityUserAgentTests.java index cf7d1cdcf676..fb183e1f335f 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/IdentityUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/IdentityUserAgentTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http; import ch.qos.logback.classic.Level; import com.azure.core.credential.TokenCredential; @@ -9,8 +9,8 @@ import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.core.http.policy.HttpLogOptions; import com.azure.identity.ClientSecretCredentialBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/KeyVaultCertificateUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/KeyVaultCertificateUserAgentTests.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/KeyVaultCertificateUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/KeyVaultCertificateUserAgentTests.java index 87b7efcc4fee..6cc951414fd8 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/KeyVaultCertificateUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/KeyVaultCertificateUserAgentTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http; import com.azure.security.keyvault.certificates.CertificateAsyncClient; import com.azure.security.keyvault.certificates.CertificateClient; import com.azure.security.keyvault.certificates.CertificateClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.certificates.properties.AzureKeyVaultCertificateProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.certificates.AzureKeyVaultCertificateAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.keyvault.certificates.CertificateClientBuilderFactory; import org.junit.jupiter.api.Test; @@ -24,10 +24,10 @@ @Isolated("Run this by itself as it captures System.out") @ExtendWith(OutputCaptureExtension.class) -public class KeyVaultCertificateUserAgentTests { +class KeyVaultCertificateUserAgentTests { @Test - public void userAgentTest(CapturedOutput output) { + void userAgentTest(CapturedOutput output) { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureKeyVaultCertificateAutoConfiguration.class)) .withPropertyValues( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/KeyVaultSecretUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/KeyVaultSecretUserAgentTests.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/KeyVaultSecretUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/KeyVaultSecretUserAgentTests.java index 4afcb179097d..e9a180d0a93a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/KeyVaultSecretUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/KeyVaultSecretUserAgentTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http; import com.azure.security.keyvault.secrets.SecretAsyncClient; import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.keyvault.secrets.properties.AzureKeyVaultSecretProperties; -import com.azure.spring.cloud.autoconfigure.keyvault.secrets.AzureKeyVaultSecretAutoConfiguration; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.keyvault.secrets.SecretClientBuilderFactory; import org.junit.jupiter.api.Test; @@ -24,10 +24,10 @@ @Isolated("Run this by itself as it captures System.out") @ExtendWith(OutputCaptureExtension.class) -public class KeyVaultSecretUserAgentTests { +class KeyVaultSecretUserAgentTests { @Test - public void userAgentTest(CapturedOutput output) { + void userAgentTest(CapturedOutput output) { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureKeyVaultSecretAutoConfiguration.class)) .withPropertyValues( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/BlobServiceUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/BlobServiceUserAgentTests.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/BlobServiceUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/BlobServiceUserAgentTests.java index 85bdf2741459..a3cba3e6c07c 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/BlobServiceUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/BlobServiceUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http.storage; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http.storage; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.properties.AzureStorageBlobProperties; -import com.azure.spring.cloud.autoconfigure.storage.blob.AzureStorageBlobAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.useragent.util.UserAgentTestUtil; +import com.azure.spring.cloud.autoconfigure.implementation.useragent.util.UserAgentTestUtil; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.storage.blob.BlobServiceClientBuilderFactory; import com.azure.storage.blob.BlobServiceAsyncClient; @@ -19,10 +19,10 @@ import static org.assertj.core.api.Assertions.assertThat; -public class BlobServiceUserAgentTests { +class BlobServiceUserAgentTests { @Test - public void userAgentTest() { + void userAgentTest() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureStorageBlobAutoConfiguration.class)) .withPropertyValues( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/QueueServiceUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/QueueServiceUserAgentTests.java similarity index 82% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/QueueServiceUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/QueueServiceUserAgentTests.java index 2e320c09108f..c3f97de86b35 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/QueueServiceUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/QueueServiceUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http.storage; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http.storage; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.properties.AzureStorageQueueProperties; -import com.azure.spring.cloud.autoconfigure.storage.queue.AzureStorageQueueAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.useragent.util.UserAgentTestUtil; +import com.azure.spring.cloud.autoconfigure.implementation.useragent.util.UserAgentTestUtil; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.storage.queue.QueueServiceClientBuilderFactory; import com.azure.storage.queue.QueueServiceAsyncClient; @@ -19,10 +19,10 @@ import static org.assertj.core.api.Assertions.assertThat; -public class QueueServiceUserAgentTests { +class QueueServiceUserAgentTests { @Test - public void userAgentTest() { + void userAgentTest() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureStorageQueueAutoConfiguration.class)) .withPropertyValues( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/ShareServiceUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/ShareServiceUserAgentTests.java similarity index 83% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/ShareServiceUserAgentTests.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/ShareServiceUserAgentTests.java index b1bd460a8d31..fe84e24a8a3b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/http/storage/ShareServiceUserAgentTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/http/storage/ShareServiceUserAgentTests.java @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.http.storage; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.http.storage; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.AzureStorageFileShareAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.fileshare.properties.AzureStorageFileShareProperties; -import com.azure.spring.cloud.autoconfigure.storage.fileshare.AzureStorageFileShareAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.useragent.util.UserAgentTestUtil; +import com.azure.spring.cloud.autoconfigure.implementation.useragent.util.UserAgentTestUtil; import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; import com.azure.spring.cloud.service.implementation.storage.fileshare.ShareServiceClientBuilderFactory; import com.azure.storage.file.share.ShareServiceAsyncClient; @@ -20,11 +20,11 @@ import static org.assertj.core.api.Assertions.assertThat; -public class ShareServiceUserAgentTests { +class ShareServiceUserAgentTests { @Disabled // TODO (xiada): fix this after token credential is supported in a share service client @Test - public void userAgentTest() { + void userAgentTest() { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(AzureStorageFileShareAutoConfiguration.class)) .withPropertyValues( diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/util/UserAgentTestUtil.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/util/UserAgentTestUtil.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/util/UserAgentTestUtil.java rename to sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/util/UserAgentTestUtil.java index 99eee973c70a..9f015e96d030 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/util/UserAgentTestUtil.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/useragent/util/UserAgentTestUtil.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.useragent.util; +package com.azure.spring.cloud.autoconfigure.implementation.useragent.util; import com.azure.core.http.HttpPipeline; import com.azure.core.http.policy.HttpPipelinePolicy; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessAutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessAutoConfigurationTest.java deleted file mode 100644 index c26a28d0a64f..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/redis/AzureJedisPasswordlessAutoConfigurationTest.java +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.redis; - -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis.AzureJedisConnectionFactory; -import com.azure.spring.cloud.autoconfigure.implementation.redis.passwordless.data.jedis.AzureRedisCredentialSupplier; -import com.azure.spring.cloud.core.implementation.util.ReflectionUtils; -import com.azure.spring.cloud.service.implementation.passwordless.AzureRedisPasswordlessProperties; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; -import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; -import redis.clients.jedis.JedisClientConfig; - -import java.time.Duration; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * Tests for {@link AzureJedisPasswordlessAutoConfiguration}. - */ -class AzureJedisPasswordlessAutoConfigurationTest { - - private static final String REDIS_SCOPE_GLOBAL = "https://redis.azure.com/.default"; - private static final String REDIS_SCOPE_CHINA = "https://*.cacheinfra.windows.net.china:10225/appid/.default"; - private static final String REDIS_SCOPE_GERMANY = "https://*.cacheinfra.windows.net.germany:10225/appid/.default"; - private static final String REDIS_SCOPE_US_GOVERNMENT = "https://*.cacheinfra.windows.us.government.net:10225/appid/.default"; - - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withPropertyValues( - "spring.redis.azure.passwordless-enabled = true", - "spring.redis.username = testuser", - "spring.redis.host = testhost" - ) - .withConfiguration(AutoConfigurations.of(AzureJedisPasswordlessAutoConfiguration.class, CustomConfiguration.class)); - - @Test - @SuppressWarnings("unchecked") - void testCredentialSupplier() { - this.contextRunner.run((context) -> { - AzureRedisCredentialSupplier supplier = context.getBean(AzureRedisCredentialSupplier.class); - Assertions.assertNotNull(supplier); - }); - } - - @Test - void testScopes() { - - this.contextRunner.run((context) -> { - AzureRedisPasswordlessProperties properties = context.getBean(AzureRedisPasswordlessProperties.class); - Assertions.assertEquals(REDIS_SCOPE_GLOBAL, properties.getScopes()); - }); - - this.contextRunner.withPropertyValues("spring.redis.azure.profile.cloud-type = AZURE_CHINA").run((context) -> { - AzureRedisPasswordlessProperties properties = context.getBean(AzureRedisPasswordlessProperties.class); - Assertions.assertEquals(REDIS_SCOPE_CHINA, properties.getScopes()); - }); - - this.contextRunner.withPropertyValues("spring.redis.azure.profile.cloud-type = AZURE_US_GOVERNMENT").run((context) -> { - AzureRedisPasswordlessProperties properties = context.getBean(AzureRedisPasswordlessProperties.class); - Assertions.assertEquals(REDIS_SCOPE_US_GOVERNMENT, properties.getScopes()); - }); - - } - - @Test - void connectionFactoryDefaultsToJedis() { - this.contextRunner.run((context) -> assertThat(context.getBean("azureRedisConnectionFactory")) - .isInstanceOf(AzureJedisConnectionFactory.class)); - } - - @Test - @SuppressWarnings("unchecked") - void testGetPasswordFromSupplier() { - AzureRedisCredentialSupplier azureRedisCredentialSupplier = mock(AzureRedisCredentialSupplier.class); - when(azureRedisCredentialSupplier.get()).thenReturn("fake-password-from-mock-supplier"); - this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.database:1") - .withBean("azureRedisCredentialSupplier", AzureRedisCredentialSupplier.class, () -> azureRedisCredentialSupplier, beanDefinition -> beanDefinition.setPrimary(true)) - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration redisStandaloneConfiguration = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(redisStandaloneConfiguration.getDatabase()).isEqualTo(1); - assertThat(jedisClientConfiguration.isUseSsl()).isFalse(); - }); - } - - @Test - void testUseSsl() { - this.contextRunner - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(jedisClientConfiguration.isUseSsl()).isFalse(); - }); - } - - @Test - void testRedisUrlConfiguration() { - this.contextRunner - .withPropertyValues("spring.redis.host:foo", "spring.redis.ssl:true", "spring.redis.url:redis://user:password@example:33") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("example"); - assertThat(standaloneConfig.getPort()).isEqualTo(33); - assertThat(jedisClientConfiguration.isUseSsl()).isTrue(); - }); - } - - @Test - void testOverrideUrlRedisConfiguration() { - this.contextRunner - .withPropertyValues("spring.redis.host:foo", "spring.redis.password:xyz", "spring.redis.port:1000", - "spring.redis.ssl:false", "spring.redis.url:rediss://user:password@example:33") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("example"); - assertThat(standaloneConfig.getPort()).isEqualTo(33); - assertThat(jedisClientConfiguration.isUseSsl()).isTrue(); - }); - } - - @Test - void testPasswordInUrlWithColon() { - this.contextRunner.withPropertyValues("spring.redis.url:redis://:pass:word@example:33").run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("example"); - assertThat(standaloneConfig.getPort()).isEqualTo(33); - }); - } - - @Test - void testPasswordInUrlStartsWithColon() { - this.contextRunner.withPropertyValues("spring.redis.url:redis://user::pass:word@example:33").run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("example"); - assertThat(standaloneConfig.getPort()).isEqualTo(33); - }); - } - - @Test - void testRedisConfigurationWithPool() { - this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.jedis.pool.min-idle:1", - "spring.redis.jedis.pool.max-idle:4", "spring.redis.jedis.pool.max-active:16", - "spring.redis.jedis.pool.max-wait:2000", "spring.redis.jedis.pool.time-between-eviction-runs:30000") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("foo"); - assertThat(jedisClientConfiguration.getPoolConfig().get().getMinIdle()).isEqualTo(1); - assertThat(jedisClientConfiguration.getPoolConfig().get().getMaxIdle()).isEqualTo(4); - assertThat(jedisClientConfiguration.getPoolConfig().get().getMaxTotal()).isEqualTo(16); - assertThat(jedisClientConfiguration.getPoolConfig().get().getMaxWaitMillis()).isEqualTo(Duration.ofSeconds(2).toMillis()); - assertThat(jedisClientConfiguration.getPoolConfig().get().getTimeBetweenEvictionRunsMillis()).isEqualTo(Duration.ofSeconds(30).toMillis()); - }); - } - - @Test - void testRedisConfigurationDisabledPool() { - this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.jedis.pool.enabled:false") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("foo"); - assertThat(jedisClientConfiguration.isUsePooling()).isEqualTo(false); - }); - } - - @Test - void testRedisConfigurationWithTimeoutAndConnectTimeout() { - this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.timeout:250", - "spring.redis.connect-timeout:1000") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("foo"); - assertThat(jedisClientConfiguration.getConnectTimeout().toMillis()).isEqualTo(1000); - }); - } - - @Test - void testRedisConfigurationWithDefaultTimeouts() { - this.contextRunner.withPropertyValues("spring.redis.host:foo") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - JedisClientConfiguration jedisClientConfiguration = (JedisClientConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "clientConfiguration", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("foo"); - assertThat(jedisClientConfiguration.getConnectTimeout().toMillis()).isEqualTo(2000); - }); - } - - @Test - void testRedisConfigurationWithClientName() { - this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.client-name:spring-boot") - .run((context) -> { - AzureJedisConnectionFactory cf = context.getBean(AzureJedisConnectionFactory.class); - JedisClientConfig jedisClientConfig = (JedisClientConfig) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "jedisClientConfig", cf); - RedisStandaloneConfiguration standaloneConfig = (RedisStandaloneConfiguration) ReflectionUtils.getField(AzureJedisConnectionFactory.class, "standaloneConfig", cf); - - assertThat(standaloneConfig.getHostName()).isEqualTo("foo"); - assertThat(jedisClientConfig.getClientName()).isEqualTo("spring-boot"); - }); - } - - @Configuration(proxyBeanMethods = false) - @EnableConfigurationProperties - static class CustomConfiguration { - - @Bean - AzureGlobalProperties azureGlobalProperties() { - return new AzureGlobalProperties(); - } - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/CosmosUserAgentTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/CosmosUserAgentTests.java deleted file mode 100644 index 4f2e34286303..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/useragent/CosmosUserAgentTests.java +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.autoconfigure.useragent; - -import com.azure.cosmos.CosmosAsyncClient; -import com.azure.cosmos.CosmosClient; -import com.azure.cosmos.CosmosClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.autoconfigure.cosmos.AzureCosmosAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.implementation.cosmos.properties.AzureCosmosProperties; -import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier; -import com.azure.spring.cloud.service.implementation.cosmos.CosmosClientBuilderFactory; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; - -import static com.azure.spring.cloud.core.implementation.util.ReflectionUtils.getField; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; - - -class CosmosUserAgentTests { - - @Test - void userAgentTest() { - final CosmosClient mockCosmosClient = mock(CosmosClient.class); - final CosmosAsyncClient cosmosAsyncClient = mock(CosmosAsyncClient.class); - new ApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(AzureCosmosAutoConfiguration.class)) - .withPropertyValues("spring.cloud.azure.cosmos.endpoint=sample") - .withBean(AzureGlobalProperties.class, AzureGlobalProperties::new) - .withBean(CosmosClient.class, () -> mockCosmosClient) - .withBean(CosmosAsyncClient.class, () -> cosmosAsyncClient) - .run(context -> { - assertThat(context).hasSingleBean(AzureCosmosProperties.class); - assertThat(context).hasSingleBean(CosmosClientBuilderFactory.class); - assertThat(context).hasSingleBean(CosmosClientBuilder.class); - assertThat(context).hasSingleBean(CosmosClient.class); - assertThat(context).hasSingleBean(CosmosAsyncClient.class); - - CosmosClientBuilder builder = context.getBean(CosmosClientBuilder.class); - String userAgent = (String) getField(CosmosClientBuilder.class, "userAgentSuffix", builder); - Assertions.assertNotNull(userAgent); - Assertions.assertEquals(AzureSpringIdentifier.AZURE_SPRING_COSMOS, userAgent); - }); - } - -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/VCAP_SERVICES b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/VCAP_SERVICES deleted file mode 100644 index eda6ca643925..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/VCAP_SERVICES +++ /dev/null @@ -1,79 +0,0 @@ -{ - "azure-storage": [ - { - "credentials": { - "accessKey": "fakekey==", - "storageAccountName": "fake" - }, - "label": "azure-storage", - "name": "mystorage", - "plan": "general-purpose-storage-account", - "provider": null, - "syslog_drain_url": null, - "tags": [ - "Azure", - "Storage" - ], - "volume_mounts": [] - } - ], - "azure-servicebus": [ - { - "credentials": { - "connectionString": "Endpoint=sb://fake.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=fakekey=", - "primaryKey": "fakekey=" - }, - "label": "azure-servicebus", - "name": "mysb", - "plan": "standard", - "provider": null, - "syslog_drain_url": null, - "tags": [ - "Azure", - "Service", - "Bus" - ], - "volume_mounts": [] - } - ], - "azure-rediscache": [ - { - "credentials": { - "host": "fake.redis.cache.windows.net", - "password": "fakepwd=", - "port": 6379 - }, - "label": "azure-rediscache", - "name": "myredis", - "plan": "basic", - "provider": null, - "syslog_drain_url": null, - "tags": [ - "Azure", - "Redis", - "Cache", - "Database" - ], - "volume_mounts": [] - } - ], - "azure-eventhubs": [ - { - "credentials": { - "connectionString": "Endpoint=sb://fake.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=fakelongstring=", - "primaryKey": "fakelongstring=" - }, - "label": "azure-eventhubs", - "name": "myeh", - "plan": "standard", - "provider": null, - "syslog_drain_url": null, - "tags": [ - "Azure", - "Event", - "Hubs" - ], - "volume_mounts": [] - } - ] -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap1.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap1.json deleted file mode 100644 index 8854cb826242..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap1.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "azure-storage": [ - { - "credentials": { - "primary_access_key": "pak", - "secondary_access_key": "sak", - "storage_account_name": "sam" - }, - "label": "azure-storage", - "name": "azure-storage-service", - "plan": "standard", - "provider": "provider", - "syslog_drain_url": null, - "tags": [ - "Azure", - "Storage" - ], - "volume_mounts": [] - } - ] -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json deleted file mode 100644 index fbc837979445..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "azure-documentdb": [ - { - "credentials": { - "documentdb_database_id": "docdb123mj", - "documentdb_database_link": "dbs/ZFxCAA==/", - "documentdb_host_endpoint": "https://hostname:443/", - "documentdb_master_key": "fakeCredentialPlaceholder" - }, - "label": "azure-documentdb", - "name": "mydocumentdb", - "plan": "standard", - "provider": null, - "syslog_drain_url": null, - "tags": [], - "volume_mounts": [] - } - ] -} diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json deleted file mode 100644 index 96fb0dc5b546..000000000000 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "user-provided": [ - { - "credentials": { - "azure-service-broker-name": "azure-documentdb", - "azure-service-plan": "standard", - "documentdb_database_id": "docdb123mj", - "documentdb_database_link": "dbs/ZFxCAA==/", - "documentdb_host_endpoint": "https://hostname:443/", - "documentdb_master_key": "fakeCredentialPlaceholder" - }, - "label": "user-provided", - "name": "mydocumentdb", - "syslog_drain_url": null, - "tags": [], - "volume_mounts": [] - } - ] -} diff --git a/sdk/spring/spring-cloud-azure-core/CHANGELOG.md b/sdk/spring/spring-cloud-azure-core/CHANGELOG.md index 87056a4f02ff..80a99badc572 100644 --- a/sdk/spring/spring-cloud-azure-core/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-core/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-core/pom.xml b/sdk/spring/spring-cloud-azure-core/pom.xml index a861a389c9df..2ca19fd5faf7 100644 --- a/sdk/spring/spring-cloud-azure-core/pom.xml +++ b/sdk/spring/spring-cloud-azure-core/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Core https://microsoft.github.io/spring-cloud-azure @@ -31,12 +31,15 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + org.springframework spring-context - 5.3.32 + 6.1.8 com.azure @@ -94,7 +97,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,25 +105,25 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework spring-test - 5.3.32 + 6.1.8 test @@ -138,6 +141,69 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -146,7 +212,7 @@ - org.springframework:spring-context:[5.3.32] + org.springframework:spring-context:[6.1.8] @@ -155,7 +221,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/SpringCloudAzureCoreRuntimeHints.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/SpringCloudAzureCoreRuntimeHints.java new file mode 100644 index 000000000000..691af2d95c91 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/SpringCloudAzureCoreRuntimeHints.java @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.core.implementation; + +import com.azure.spring.cloud.core.properties.authentication.NamedKeyProperties; +import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; +import com.azure.spring.cloud.core.properties.client.AmqpClientProperties; +import com.azure.spring.cloud.core.properties.client.ClientProperties; +import com.azure.spring.cloud.core.properties.client.HeaderProperties; +import com.azure.spring.cloud.core.properties.client.HttpClientProperties; +import com.azure.spring.cloud.core.properties.client.HttpLoggingProperties; +import com.azure.spring.cloud.core.properties.profile.AzureEnvironmentProperties; +import com.azure.spring.cloud.core.properties.profile.AzureProfileProperties; +import com.azure.spring.cloud.core.properties.proxy.AmqpProxyProperties; +import com.azure.spring.cloud.core.properties.proxy.HttpProxyProperties; +import com.azure.spring.cloud.core.properties.proxy.ProxyProperties; +import com.azure.spring.cloud.core.properties.retry.AmqpRetryProperties; +import com.azure.spring.cloud.core.properties.retry.ExponentialRetryProperties; +import com.azure.spring.cloud.core.properties.retry.FixedRetryProperties; +import com.azure.spring.cloud.core.properties.retry.RetryProperties; +import org.springframework.aot.hint.MemberCategory; +import org.springframework.aot.hint.ReflectionHints; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; + +import java.util.stream.Stream; + +class SpringCloudAzureCoreRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + ReflectionHints reflectionHints = hints.reflection(); + Stream.of( + TokenCredentialProperties.class, + NamedKeyProperties.class, + AmqpClientProperties.class, + ClientProperties.class, + HeaderProperties.class, + HttpClientProperties.class, + HttpLoggingProperties.class, + AzureEnvironmentProperties.class, + AzureProfileProperties.class, + AmqpProxyProperties.class, + HttpProxyProperties.class, + ProxyProperties.class, + AmqpRetryProperties.class, + ExponentialRetryProperties.class, + FixedRetryProperties.class, + RetryProperties.class) + .forEach(type -> reflectionHints.registerType(type, + builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS))); + } + +} diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/factory/AbstractAzureServiceClientBuilderFactory.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/factory/AbstractAzureServiceClientBuilderFactory.java index 80772af644ef..27423835fcc2 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/factory/AbstractAzureServiceClientBuilderFactory.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/factory/AbstractAzureServiceClientBuilderFactory.java @@ -5,6 +5,7 @@ import com.azure.core.credential.TokenCredential; import com.azure.core.util.Configuration; +import com.azure.core.util.ConfigurationBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.spring.cloud.core.credential.AzureCredentialResolver; import com.azure.spring.cloud.core.credential.AzureCredentialResolvers; @@ -106,7 +107,7 @@ public abstract class AbstractAzureServiceClientBuilderFactory implements Azu private ServiceConnectionStringProvider connectionStringProvider; private boolean credentialConfigured = false; private final List> customizers = new ArrayList<>(); - protected final Configuration configuration = new Configuration(); + protected final Configuration configuration = new ConfigurationBuilder().build(); protected AzureCredentialResolver tokenCredentialResolver = DEFAULT_TOKEN_CREDENTIAL_RESOLVER; protected TokenCredential defaultTokenCredential = DEFAULT_DEFAULT_TOKEN_CREDENTIAL; diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/trace/AzureHttpClientBuilderFactoryBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/trace/AzureHttpClientBuilderFactoryBeanPostProcessor.java deleted file mode 100644 index 167781324a56..000000000000 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/trace/AzureHttpClientBuilderFactoryBeanPostProcessor.java +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.core.implementation.trace; - -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.spring.cloud.core.implementation.factory.AbstractAzureHttpClientBuilderFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.core.Ordered; - -/** - * Apply the http pipeline policy to service client builder based on HTTP protocol. - */ -public class AzureHttpClientBuilderFactoryBeanPostProcessor implements BeanPostProcessor, Ordered, BeanFactoryAware { - - private static final Logger LOGGER = LoggerFactory.getLogger(AzureHttpClientBuilderFactoryBeanPostProcessor.class); - - private final String httpPolicyBeanName; - private BeanFactory beanFactory; - - @Override - public int getOrder() { - return LOWEST_PRECEDENCE; - } - - @Override - public void setBeanFactory(BeanFactory beanFactory) { - this.beanFactory = beanFactory; - } - - /** - * Create an {@link AzureHttpClientBuilderFactoryBeanPostProcessor} instance with a http policy bean name. - * @param httpPolicyBeanName the bean name for the http policy. - */ - public AzureHttpClientBuilderFactoryBeanPostProcessor(String httpPolicyBeanName) { - this.httpPolicyBeanName = httpPolicyBeanName; - } - - @Override - @SuppressWarnings({ "rawtypes"}) - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - if (!(bean instanceof AbstractAzureHttpClientBuilderFactory)) { - return bean; - } - - if (beanFactory.containsBean(this.httpPolicyBeanName)) { - HttpPipelinePolicy policy = (HttpPipelinePolicy) beanFactory.getBean(this.httpPolicyBeanName); - AbstractAzureHttpClientBuilderFactory builderFactory = (AbstractAzureHttpClientBuilderFactory) bean; - builderFactory.addHttpPipelinePolicy(policy); - LOGGER.debug("Added the Sleuth http pipeline policy to {} builder.", bean.getClass()); - } - return bean; - } -} diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/RuntimeHintsUtils.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/RuntimeHintsUtils.java new file mode 100644 index 000000000000..0ea754e475ae --- /dev/null +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/implementation/util/RuntimeHintsUtils.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.core.implementation.util; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.core.type.classreading.CachingMetadataReaderFactory; +import org.springframework.core.type.classreading.MetadataReader; +import org.springframework.core.type.classreading.MetadataReaderFactory; +import org.springframework.util.ClassUtils; +import org.springframework.util.SystemPropertyUtils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public final class RuntimeHintsUtils { + + private static final Log LOGGER = LogFactory.getLog(RuntimeHintsUtils.class); + + private RuntimeHintsUtils() { + + } + + @SuppressWarnings("rawtypes") + public static List findTypes(String basePackage, ClassLoader classLoader) throws IOException { + ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(classLoader); + MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver); + + List candidates = new ArrayList<>(); + String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + + resolveBasePackage(basePackage) + "/" + "**/*.class"; + Resource[] resources = resourcePatternResolver.getResources(packageSearchPath); + for (Resource resource : resources) { + if (resource.isReadable()) { + MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); + + String className = metadataReader.getClassMetadata().getClassName(); + if (className.endsWith("1") || className.endsWith("2")) { + continue; + } + LOGGER.debug("Will register class: " + className); + try { + Class e = Class.forName(className); + candidates.add(e); + } catch (ClassNotFoundException ex) { + LOGGER.error("Class not found", ex); + } catch (AssertionError e) { + LOGGER.error("Assertion error happens", e); + } + } + } + return candidates; + } + + private static String resolveBasePackage(String basePackage) { + return ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(basePackage)); + } +} diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/NamedKeyProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/NamedKeyProperties.java index d1d540d73c1a..a427a24b9cdd 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/NamedKeyProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/NamedKeyProperties.java @@ -8,6 +8,12 @@ */ public final class NamedKeyProperties { + /** + * Creates an instance of {@link NamedKeyProperties}. + */ + public NamedKeyProperties() { + } + private String name; private String key; diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/TokenCredentialProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/TokenCredentialProperties.java index 99054abd0b66..929108547cb2 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/TokenCredentialProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/authentication/TokenCredentialProperties.java @@ -11,6 +11,12 @@ */ public final class TokenCredentialProperties implements TokenCredentialOptionsProvider.TokenCredentialOptions { + /** + * Creates an instance of {@link TokenCredentialProperties}. + */ + public TokenCredentialProperties() { + } + /** * Client id to use when performing service principal authentication with Azure. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/AmqpClientProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/AmqpClientProperties.java index 123dbe8f17c0..0d939726c53b 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/AmqpClientProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/AmqpClientProperties.java @@ -11,6 +11,12 @@ */ public final class AmqpClientProperties extends ClientProperties implements ClientOptionsProvider.AmqpClientOptions { + /** + * Creates an instance of {@link AmqpClientProperties}. + */ + public AmqpClientProperties() { + } + /** * Transport type for AMQP-based client. Supported types are: AMQP, AMQP_WEB_SOCKETS. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/ClientProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/ClientProperties.java index 463aad95b0dd..af8e10b75a0c 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/ClientProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/ClientProperties.java @@ -10,6 +10,12 @@ */ public class ClientProperties implements ClientOptionsProvider.ClientOptions { + /** + * Creates an instance of {@link ClientProperties}. + */ + public ClientProperties() { + } + /** * Represents current application and is used for telemetry/monitoring purposes. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HeaderProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HeaderProperties.java index 5d83db4dbcf6..1c87287a135a 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HeaderProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HeaderProperties.java @@ -10,6 +10,12 @@ */ public final class HeaderProperties { + /** + * Creates an instance of {@link HeaderProperties}. + */ + public HeaderProperties() { + } + /** * The name of the header. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpClientProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpClientProperties.java index 0b312df2a11f..7377a1f6fafc 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpClientProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpClientProperties.java @@ -14,6 +14,12 @@ */ public final class HttpClientProperties extends ClientProperties implements ClientOptionsProvider.HttpClientOptions { + /** + * Creates an instance of {@link HttpClientProperties}. + */ + public HttpClientProperties() { + } + /** * Amount of time(Duration) each request being sent over the wire. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpLoggingProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpLoggingProperties.java index d6188d0c3883..7759f64470e1 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpLoggingProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/client/HttpLoggingProperties.java @@ -15,6 +15,12 @@ */ public final class HttpLoggingProperties implements HttpLoggingOptionsProvider.HttpLoggingOptions { + /** + * Creates an instance of {@link HttpLoggingProperties}. + */ + public HttpLoggingProperties() { + } + /** * The level of detail to log on HTTP messages. Supported types are: NONE, BASIC, HEADERS, BODY, BODY_AND_HEADERS. The default value is `NONE`. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureEnvironmentProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureEnvironmentProperties.java index bd531447e124..63cfa2c253e2 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureEnvironmentProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureEnvironmentProperties.java @@ -25,15 +25,6 @@ public class AzureEnvironmentProperties implements AzureProfileOptionsProvider.A setServiceBusDomainName("servicebus.chinacloudapi.cn"); }}; - /** - * Provides the environment instance for Azure Germany. - * @deprecated AZURE_GERMANY is deprecated. Please use other environment instances. - */ - @Deprecated - public static final AzureEnvironmentProperties AZURE_GERMANY = new AzureEnvironmentProperties(AzureEnvironment.AZURE_GERMANY) {{ - setServiceBusDomainName("servicebus.cloudapi.de"); - }}; - /** * Provides the environment instance for Azure US Government. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileOptionsAdapter.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileOptionsAdapter.java index 47d845b48d20..bb20c84bf0ee 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileOptionsAdapter.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileOptionsAdapter.java @@ -13,6 +13,12 @@ */ public abstract class AzureProfileOptionsAdapter implements AzureProfileOptionsProvider.ProfileOptions { + /** + * Creates an instance of {@link AzureProfileOptionsAdapter}. + */ + public AzureProfileOptionsAdapter() { + } + /** * Change the environment according to the cloud type set. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileProperties.java index 5101a12e6a37..252cb23c33a2 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/profile/AzureProfileProperties.java @@ -10,6 +10,12 @@ */ public final class AzureProfileProperties extends AzureProfileOptionsAdapter { + /** + * Creates an instance of {@link AzureProfileProperties}. + */ + public AzureProfileProperties() { + } + private String tenantId; private String subscriptionId; private AzureProfileOptionsProvider.CloudType cloudType; diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/AmqpProxyProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/AmqpProxyProperties.java index 4a4b25bb31e5..9b4278186e88 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/AmqpProxyProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/AmqpProxyProperties.java @@ -11,7 +11,13 @@ public final class AmqpProxyProperties extends ProxyProperties implements ProxyOptionsProvider.AmqpProxyOptions { /** - * Authentication type used against the proxy. For instance, 'none', 'basic', 'digest'. The default value is 'none'. + * Creates an instance of {@link AmqpProxyProperties}. + */ + public AmqpProxyProperties() { + } + + /** + * Authentication type used against the proxy. For instance, 'none', 'basic', 'digest'. The default value is `'none'`. */ private String authenticationType; diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/HttpProxyProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/HttpProxyProperties.java index 00c1a850307c..05d51567b4f1 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/HttpProxyProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/HttpProxyProperties.java @@ -10,6 +10,12 @@ */ public final class HttpProxyProperties extends ProxyProperties implements ProxyOptionsProvider.HttpProxyOptions { + /** + * Creates an instance of {@link HttpProxyProperties}. + */ + public HttpProxyProperties() { + } + /** * A list of hosts or CIDR to not use proxy HTTP/HTTPS connections through. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/ProxyProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/ProxyProperties.java index 8a93fa738df6..186c09824d2a 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/ProxyProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/proxy/ProxyProperties.java @@ -10,6 +10,12 @@ */ public class ProxyProperties implements ProxyOptionsProvider.ProxyOptions { + /** + * Creates an instance of {@link ProxyProperties}. + */ + public ProxyProperties() { + } + private String type; private String hostname; private Integer port; diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/AmqpRetryProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/AmqpRetryProperties.java index cb2d50f60fe4..03fe6ce96041 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/AmqpRetryProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/AmqpRetryProperties.java @@ -12,6 +12,12 @@ */ public class AmqpRetryProperties extends RetryProperties implements RetryOptionsProvider.AmqpRetryOptions { + /** + * Creates an instance of {@link AmqpRetryProperties}. + */ + public AmqpRetryProperties() { + } + /** * Amount of time(Duration) to wait until timeout. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/ExponentialRetryProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/ExponentialRetryProperties.java index 4da05ebc1c72..036819809196 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/ExponentialRetryProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/ExponentialRetryProperties.java @@ -12,6 +12,12 @@ */ public class ExponentialRetryProperties implements RetryOptionsProvider.RetryOptions.ExponentialRetryOptions { + /** + * Creates an instance of {@link ExponentialRetryProperties}. + */ + public ExponentialRetryProperties() { + } + /** * The maximum number of attempts. */ @@ -21,7 +27,7 @@ public class ExponentialRetryProperties implements RetryOptionsProvider.RetryOpt */ private Duration baseDelay; /** - * Maximum permissible amount of time(duration) between retry attempts. + * Maximum permissible amount(duration) of time between retry attempts. */ private Duration maxDelay; diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/FixedRetryProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/FixedRetryProperties.java index 32687c0a4d9e..7279aabed6a9 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/FixedRetryProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/FixedRetryProperties.java @@ -12,6 +12,12 @@ */ public class FixedRetryProperties implements RetryOptionsProvider.RetryOptions.FixedRetryOptions { + /** + * Creates an instance of {@link FixedRetryProperties}. + */ + public FixedRetryProperties() { + } + /** * The maximum number of attempts. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/RetryProperties.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/RetryProperties.java index 92b2738a792c..3ba006a25234 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/RetryProperties.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/properties/retry/RetryProperties.java @@ -10,6 +10,12 @@ */ public class RetryProperties implements RetryOptionsProvider.RetryOptions { + /** + * Creates an instance of {@link RetryProperties}. + */ + public RetryProperties() { + } + /** * The mode for retry backoff. */ diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/AzureProfileOptionsProvider.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/AzureProfileOptionsProvider.java index 14c39115adb4..85cfb0ba9c4e 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/AzureProfileOptionsProvider.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/AzureProfileOptionsProvider.java @@ -108,54 +108,67 @@ public static CloudType fromString(String cloudType) { interface AzureEnvironmentOptions { /** + * Return the management portal URL. * @return The management portal URL. */ String getPortal(); /** + * Return the publishing settings file URL. * @return the publishing settings file URL. */ String getPublishingProfile(); /** + * Return the management service endpoint. * @return the management service endpoint. */ String getManagementEndpoint(); /** + * Return the resource management endpoint. * @return the resource management endpoint. */ String getResourceManagerEndpoint(); /** + * Return the sql server management endpoint for mobile commands. * @return the sql server management endpoint for mobile commands. */ String getSqlManagementEndpoint(); /** + * Return the dns suffix for sql servers. * @return the dns suffix for sql servers. */ String getSqlServerHostnameSuffix(); /** + * Return the template gallery endpoint. * @return the template gallery endpoint. */ String getGalleryEndpoint(); /** + * Return the Active Directory login endpoint. * @return the Active Directory login endpoint. */ String getActiveDirectoryEndpoint(); /** + * Return the resource ID to obtain AD tokens for. * @return The resource ID to obtain AD tokens for. */ String getActiveDirectoryResourceId(); /** + * Return the Active Directory Graph endpoint. * @return the Active Directory Graph endpoint. */ String getActiveDirectoryGraphEndpoint(); /** + * Return the Microsoft Graph endpoint. * @return the Microsoft Graph endpoint. */ String getMicrosoftGraphEndpoint(); /** + * Return the Data Lake resource ID. * @return the Data Lake resource ID. */ String getDataLakeEndpointResourceId(); /** + * Return the Active Directory api version. * @return the Active Directory api version. */ String getActiveDirectoryGraphApiVersion(); @@ -165,27 +178,33 @@ interface AzureEnvironmentOptions { */ String getStorageEndpointSuffix(); /** + * Return the key vault service dns suffix. * @return the key vault service dns suffix. */ String getKeyVaultDnsSuffix(); /** + * Return the data lake store filesystem service dns suffix. * @return the data lake store filesystem service dns suffix. */ String getAzureDataLakeStoreFileSystemEndpointSuffix(); /** + * Return the data lake analytics job and catalog service dns suffix. * @return the data lake analytics job and catalog service dns suffix. */ String getAzureDataLakeAnalyticsCatalogAndJobEndpointSuffix(); /** + * Return the log analytics endpoint. * @return the log analytics endpoint. */ String getAzureLogAnalyticsEndpoint(); /** + * Return the application insights endpoint. * @return the application insights endpoint. */ String getAzureApplicationInsightsEndpoint(); /** + * Return the domain name of Service Bus. * @return the domain name of Service Bus. */ String getServiceBusDomainName(); @@ -200,6 +219,7 @@ interface AzureEnvironmentOptions { AzureEnvironmentOptions fromAzureManagementEnvironment(com.azure.core.management.AzureEnvironment environment); /** + * Return the AzureEnvironment * @return the azure core {@link com.azure.core.management.AzureEnvironment}. */ default com.azure.core.management.AzureEnvironment toAzureManagementEnvironment() { diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/ServiceConnectionStringProvider.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/ServiceConnectionStringProvider.java index 5bd5f7613c67..dcbe5bde4614 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/ServiceConnectionStringProvider.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/ServiceConnectionStringProvider.java @@ -5,6 +5,8 @@ /** * Service connection string provider to provide the connection string for a service type. + * + * @param The service type. */ public interface ServiceConnectionStringProvider extends ConnectionStringProvider { diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/StaticConnectionStringProvider.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/StaticConnectionStringProvider.java index 6a183a5d4bd0..a5332c2fbe71 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/StaticConnectionStringProvider.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/provider/connectionstring/StaticConnectionStringProvider.java @@ -5,6 +5,8 @@ /** * A static implementation of {@link ServiceConnectionStringProvider}, with static value of connection string. + * + * @param The service type. */ public final class StaticConnectionStringProvider implements ServiceConnectionStringProvider { diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AbstractAzureStorageProtocolResolver.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AbstractAzureStorageProtocolResolver.java index 4708f8ace208..64aca91a911c 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AbstractAzureStorageProtocolResolver.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AbstractAzureStorageProtocolResolver.java @@ -26,6 +26,12 @@ public abstract class AbstractAzureStorageProtocolResolver implements ProtocolResolver, ResourcePatternResolver, ResourceLoaderAware, BeanFactoryPostProcessor { + /** + * Creates an instance of {@link AbstractAzureStorageProtocolResolver}. + */ + public AbstractAzureStorageProtocolResolver() { + } + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAzureStorageProtocolResolver.class); /** diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageBlobProtocolResolver.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageBlobProtocolResolver.java index fb35dd79f8f7..28e9e38d0264 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageBlobProtocolResolver.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageBlobProtocolResolver.java @@ -20,6 +20,12 @@ */ public final class AzureStorageBlobProtocolResolver extends AbstractAzureStorageProtocolResolver { + /** + * Creates an instance of {@link AzureStorageBlobProtocolResolver}. + */ + public AzureStorageBlobProtocolResolver() { + } + private BlobServiceClient blobServiceClient; private static final BlobListDetails RETRIEVE_NOTHING_DETAILS = new BlobListDetails(); diff --git a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageFileProtocolResolver.java b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageFileProtocolResolver.java index 20ccd40bbe32..ab848657f354 100644 --- a/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageFileProtocolResolver.java +++ b/sdk/spring/spring-cloud-azure-core/src/main/java/com/azure/spring/cloud/core/resource/AzureStorageFileProtocolResolver.java @@ -17,6 +17,12 @@ */ public final class AzureStorageFileProtocolResolver extends AbstractAzureStorageProtocolResolver { + /** + * Creates an instance of {@link AzureStorageFileProtocolResolver}. + */ + public AzureStorageFileProtocolResolver() { + } + private ShareServiceClient shareServiceClient; /** diff --git a/sdk/spring/spring-cloud-azure-core/src/main/resources/META-INF/native-image/com.azure.spring/spring-cloud-azure-core/native-image.properties b/sdk/spring/spring-cloud-azure-core/src/main/resources/META-INF/native-image/com.azure.spring/spring-cloud-azure-core/native-image.properties new file mode 100644 index 000000000000..22a32eda9409 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-core/src/main/resources/META-INF/native-image/com.azure.spring/spring-cloud-azure-core/native-image.properties @@ -0,0 +1,2 @@ +Args=\ + -H:+AddAllCharsets diff --git a/sdk/spring/spring-cloud-azure-core/src/main/resources/META-INF/spring/aot.factories b/sdk/spring/spring-cloud-azure-core/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 000000000000..26cd52643c02 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-core/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,2 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar= \ +com.azure.spring.cloud.core.implementation.SpringCloudAzureCoreRuntimeHints diff --git a/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/factory/AbstractAzureServiceClientBuilderFactoryTests.java b/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/factory/AbstractAzureServiceClientBuilderFactoryTests.java index 7844045193dd..6c2e8df00749 100644 --- a/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/factory/AbstractAzureServiceClientBuilderFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-core/src/test/java/com/azure/spring/cloud/core/factory/AbstractAzureServiceClientBuilderFactoryTests.java @@ -5,17 +5,17 @@ import com.azure.core.credential.TokenCredential; import com.azure.core.util.Configuration; -import com.azure.spring.cloud.core.provider.RetryOptionsProvider; -import com.azure.spring.cloud.core.provider.connectionstring.ConnectionStringProvider; -import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.credential.descriptor.AuthenticationDescriptor; import com.azure.spring.cloud.core.implementation.factory.AbstractAzureServiceClientBuilderFactory; -import com.azure.spring.cloud.core.properties.AzureProperties; import com.azure.spring.cloud.core.implementation.properties.AzureSdkProperties; +import com.azure.spring.cloud.core.properties.AzureProperties; import com.azure.spring.cloud.core.properties.client.ClientProperties; import com.azure.spring.cloud.core.properties.proxy.ProxyProperties; import com.azure.spring.cloud.core.properties.retry.RetryProperties; +import com.azure.spring.cloud.core.provider.RetryOptionsProvider; +import com.azure.spring.cloud.core.provider.connectionstring.ConnectionStringProvider; +import com.azure.spring.cloud.core.provider.connectionstring.StaticConnectionStringProvider; import org.junit.jupiter.api.Test; import java.util.Collections; @@ -105,6 +105,19 @@ void customizerShouldEffect() { assertEquals(2, anotherBuilder.getCustomizedTimes()); } + @Test + void configurationShouldEffect() { + System.setProperty(TestClientBuilder.TEST_CONFIGURATION_KEY, "custom"); + TestClientBuilderFactory factory = new TestClientBuilderFactory(new AzureTestProperties()); + TestClientBuilder builder = factory.build(); + TestClient customClient = builder.build(); + assertEquals("custom", customClient.testConfiguration); + + builder.configuration(null); + TestClient client = builder.build(); + assertEquals(TestClientBuilder.TEST_CONFIGURATION_DEFAULT, client.getTestConfiguration()); + } + static class TestBuilderCustomizer implements AzureServiceClientBuilderCustomizer { @Override @@ -159,7 +172,7 @@ protected BiConsumer consumeApplicationId() { @Override protected BiConsumer consumeConfiguration() { - return (a, b) -> { }; + return TestClientBuilder::configuration; } @Override @@ -173,12 +186,28 @@ protected BiConsumer consumeConnectionString() { } } + static class TestClient { + + private String testConfiguration; + + TestClient(String testConfiguration) { + this.testConfiguration = testConfiguration; + } + + String getTestConfiguration() { + return testConfiguration; + } + } static class TestClientBuilder { + static final String TEST_CONFIGURATION_KEY = "test_configuration_key"; + static final String TEST_CONFIGURATION_DEFAULT = "test_configuration_default"; private String connectionString; private String applicationId; private int customizedTimes = 0; + private Configuration configuration; + public String getConnectionString() { return connectionString; } @@ -202,6 +231,18 @@ public int getCustomizedTimes() { public void setCustomizedTimes(int customizedTimes) { this.customizedTimes = customizedTimes; } + + public TestClientBuilder configuration(Configuration configuration) { + this.configuration = configuration; + return this; + } + + public TestClient build() { + if (this.configuration != null) { + return new TestClient(configuration.get(TEST_CONFIGURATION_KEY)); + } + return new TestClient(TEST_CONFIGURATION_DEFAULT); + } } static class AzureTestProperties extends AzureSdkProperties implements ConnectionStringProvider, RetryOptionsProvider { diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/CHANGELOG.md b/sdk/spring/spring-cloud-azure-feature-management-web/CHANGELOG.md index c108eb1f748d..237ee05f5db9 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-feature-management-web/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,34 +11,70 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. @@ -49,10 +86,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav * Snapshot support using, `spring.cloud.azure.appconfiguration.stores[0].selects[0].snapshot-name`. * Support for trimming prefixes from keys, default value is the key-filter when key-filter is used. `spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix` +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -65,10 +110,22 @@ Fixes a bug where exclusions from the portal don't map correctly resulting in a Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml b/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml index 30f7939e57bd..8e0120a7744b 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml +++ b/sdk/spring/spring-cloud-azure-feature-management-web/pom.xml @@ -6,57 +6,149 @@ ../../parents/azure-client-sdk-parent 4.0.0 - com.azure.spring spring-cloud-azure-feature-management-web - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Feature Management Web Adds Feature Management into Spring Web - scm:git:git@github.com:Azure/azure-sdk-for-java.git scm:git:ssh://git@github.com:Azure/azure-sdk-for-java.git https://github.com/Azure/azure-sdk-for-java - microsoft Microsoft Corporation - org.springframework spring-web - 5.3.32 + 6.1.8 org.springframework spring-webmvc - 5.3.32 - - - javax.servlet - javax.servlet-api - 4.0.1 - provided + 6.1.8 com.azure.spring spring-cloud-azure-feature-management - 4.20.0-beta.1 + 5.14.0-beta.1 + + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 + test + + + + net.bytebuddy + byte-buddy + 1.14.16 + test + + + net.bytebuddy + byte-buddy-agent + 1.14.16 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.1 + + + + com.azure.spring.cloud.feature.management.web + + + true + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + -Xlint:deprecation + + + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -65,10 +157,10 @@ - com.azure.spring:spring-cloud-azure-feature-management:[4.20.0-beta.1] - javax.servlet:javax.servlet-api:[4.0.1] - org.springframework:spring-web:[5.3.32] - org.springframework:spring-webmvc:[5.3.32] + com.azure.spring:spring-cloud-azure-feature-management:[5.14.0-beta.1] + jakarta.servlet:jakarta.servlet-api:[6.0.0] + org.springframework:spring-web:[6.1.8] + org.springframework:spring-webmvc:[6.1.8] diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/DisabledFeaturesHandler.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/DisabledFeaturesHandler.java index e175e9d2731a..d636ebfd2040 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/DisabledFeaturesHandler.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/DisabledFeaturesHandler.java @@ -2,8 +2,8 @@ // Licensed under the MIT License. package com.azure.spring.cloud.feature.management.web; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * Interface for Disabled Features Handler. The Feature Handler checks to see if this Component is implemented before diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureGate.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureGate.java index 09f9d0b15b7d..7052b348d096 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureGate.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureGate.java @@ -15,16 +15,19 @@ public @interface FeatureGate { /** + * Return name of the feature that is checked. * @return Name of the feature that is checked. */ String feature(); /** + * Return endpoint to be fall backed on if feature is off. * @return Endpoint to be fall backed on if feature is off. */ String fallback() default ""; /** + * If true, feature will return the same value during the length of the request. * @return If true, feature will return the same value during the length of the request. */ boolean snapshot() default false; diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureHandler.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureHandler.java index f07550dbef45..2e6e2ec17962 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureHandler.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureHandler.java @@ -6,9 +6,6 @@ import java.lang.reflect.Method; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.ReflectionUtils; @@ -17,6 +14,8 @@ import com.azure.spring.cloud.feature.management.FeatureManager; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import reactor.core.publisher.Mono; /** diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/implementation/FeatureManagementWebConfiguration.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagementWebConfiguration.java similarity index 85% rename from sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/implementation/FeatureManagementWebConfiguration.java rename to sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagementWebConfiguration.java index 59f97d177d27..80bbde699976 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/implementation/FeatureManagementWebConfiguration.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagementWebConfiguration.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.feature.management.web.implementation; +package com.azure.spring.cloud.feature.management.web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -10,9 +10,7 @@ import org.springframework.web.context.annotation.RequestScope; import com.azure.spring.cloud.feature.management.FeatureManager; -import com.azure.spring.cloud.feature.management.web.DisabledFeaturesHandler; -import com.azure.spring.cloud.feature.management.web.FeatureHandler; -import com.azure.spring.cloud.feature.management.web.FeatureManagerSnapshot; +import com.azure.spring.cloud.feature.management.web.implementation.FeatureConfig; /** * Configurations setting up FeatureManagerSnapshot, FeatureHandler, FeatureConfig @@ -20,7 +18,7 @@ @Configuration @EnableConfigurationProperties @ConditionalOnBean(FeatureManager.class) -public class FeatureManagementWebConfiguration { +class FeatureManagementWebConfiguration { /** * Creates FeatureManagerSnapshot diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshot.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshot.java index ba27e44ef1cb..f908b76c4041 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshot.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshot.java @@ -23,7 +23,7 @@ public class FeatureManagerSnapshot { * return the same value for all checks of the given feature flag. * @param featureManager FeatureManager */ - public FeatureManagerSnapshot(FeatureManager featureManager) { + FeatureManagerSnapshot(FeatureManager featureManager) { this.featureManager = featureManager; this.requestMap = new HashMap<>(); } diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 52101b2ec282..000000000000 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.azure.spring.cloud.feature.management.web.implementation.FeatureManagementWebConfiguration \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..9afb9ddf1b2b --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.azure.spring.cloud.feature.management.web.FeatureManagementWebConfiguration diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureHandlerTest.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureHandlerTest.java index 024fe53d86fd..6bd317a6c125 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureHandlerTest.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureHandlerTest.java @@ -17,9 +17,6 @@ import java.lang.reflect.Method; import java.lang.reflect.UndeclaredThrowableException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @@ -31,6 +28,8 @@ import com.azure.spring.cloud.feature.management.FeatureManager; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import reactor.core.publisher.Mono; /** @@ -61,13 +60,12 @@ public class FeatureHandlerTest { @Mock FeatureHandler featureHandler2; - + @BeforeEach public void setup(TestInfo testInfo) { MockitoAnnotations.openMocks(this); } - @Test public void preHandleNotHandler() { assertTrue(featureHandler.preHandle(request, response, new Object())); @@ -130,7 +128,7 @@ public void preHandleFeatureOnRedirectError() throws NoSuchMethodException, IOEx doThrow(ioException).when(response).sendRedirect("/redirected"); UndeclaredThrowableException ex = assertThrows(UndeclaredThrowableException.class, - () -> featureHandler.preHandle(request, response, handlerMethod)); + () -> featureHandler.preHandle(request, response, handlerMethod)); assertSame(ioException, ex.getCause()); } diff --git a/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshotTest.java b/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshotTest.java index cecf35558768..8e9dbd7a0af5 100644 --- a/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshotTest.java +++ b/sdk/spring/spring-cloud-azure-feature-management-web/src/test/java/com/azure/spring/cloud/feature/management/web/FeatureManagerSnapshotTest.java @@ -10,8 +10,6 @@ import java.util.concurrent.ExecutionException; -import javax.servlet.http.HttpServletRequest; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; @@ -22,6 +20,7 @@ import com.azure.spring.cloud.feature.management.FeatureManager; +import jakarta.servlet.http.HttpServletRequest; import reactor.core.publisher.Mono; public class FeatureManagerSnapshotTest { diff --git a/sdk/spring/spring-cloud-azure-feature-management/CHANGELOG.md b/sdk/spring/spring-cloud-azure-feature-management/CHANGELOG.md index 6b6eef1900c5..47c74925cfb2 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-feature-management/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,34 +11,70 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. @@ -49,10 +86,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav * Snapshot support using, `spring.cloud.azure.appconfiguration.stores[0].selects[0].snapshot-name`. * Support for trimming prefixes from keys, default value is the key-filter when key-filter is used. `spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix` +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -65,10 +110,22 @@ Fixes a bug where exclusions from the portal don't map correctly resulting in a Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. diff --git a/sdk/spring/spring-cloud-azure-feature-management/README.md b/sdk/spring/spring-cloud-azure-feature-management/README.md index 9fa104fe463c..127001dd28d2 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/README.md +++ b/sdk/spring/spring-cloud-azure-feature-management/README.md @@ -247,14 +247,16 @@ An example web application that uses the targeting feature filter is available i To begin using the `TargetingFilter` in an application it must be added as a `@Bean` like any other Feature Filter. `TargetingFilter` relies on another `@Bean` to be added to the application, `ITargetingContextAccessor`. The `ITargetingContextAccessor` allows for defining the current `TargetingContext` to be used for defining the current user id and groups. An example of this is: ```java -public class TargetingContextAccessorImpl implements TargetingContextAccessor { +public class TargetingContextAccessor implements ITargetingContextAccessor { @Override - void configureTargetingContext(TargetingContext context) { + public Mono getContextAsync() { + TargetingContext context = new TargetingContext(); context.setUserId("Jeff"); ArrayList groups = new ArrayList(); groups.add("Ring0"); context.setGroups(groups); + return Mono.just(context); } } @@ -266,7 +268,7 @@ Options are available to customize how targeting evaluation is performed across ```java @Bean - public TargetingFilter targetingFilter(TargetingContextAccessor contextAccessor) { + public TargetingFilter targetingFilter(ITargetingContextAccessor contextAccessor) { return new TargetingFilter(contextAccessor, new TargetingEvaluationOptions().setIgnoreCase(true)); } ``` diff --git a/sdk/spring/spring-cloud-azure-feature-management/pom.xml b/sdk/spring/spring-cloud-azure-feature-management/pom.xml index 8ada6799f154..89dcf6c5970b 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/pom.xml +++ b/sdk/spring/spring-cloud-azure-feature-management/pom.xml @@ -1,6 +1,4 @@ - + com.azure azure-client-sdk-parent @@ -8,61 +6,186 @@ ../../parents/azure-client-sdk-parent 4.0.0 - com.azure.spring spring-cloud-azure-feature-management - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Feature Management Adds Feature Management into Spring - scm:git:git@github.com:Azure/azure-sdk-for-java.git scm:git:ssh://git@github.com:Azure/azure-sdk-for-java.git https://github.com/Azure/azure-sdk-for-java - microsoft Microsoft Corporation - org.springframework spring-context - 5.3.32 + 6.1.8 org.springframework.boot spring-boot-starter - 2.7.18 + 3.3.0 + + + ch.qos.logback + logback-classic + + + + + org.springframework.boot + spring-boot-configuration-processor + 3.3.0 + true com.fasterxml.jackson.core jackson-annotations - 2.13.5 + 2.17.1 com.fasterxml.jackson.core jackson-databind - 2.13.5 + 2.17.1 io.projectreactor.netty reactor-netty - 1.0.45 + 1.1.19 org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 + test + + + + org.mockito + mockito-core + 5.11.0 + test + + + + + net.bytebuddy + byte-buddy + 1.14.16 + test + + + net.bytebuddy + byte-buddy-agent + 1.14.16 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.1 + + + + com.azure.spring.cloud.feature.management + + + true + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + -Xlint:deprecation + + + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + annotation-process + + compile + + + + -proc:only + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -71,11 +194,13 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.5] - com.fasterxml.jackson.core:jackson-databind:[2.13.5] - io.projectreactor.netty:reactor-netty:[1.0.45] - org.springframework.boot:spring-boot-starter:[2.7.18] - org.springframework:spring-context:[5.3.32] + com.fasterxml.jackson.core:jackson-annotations:[2.17.1] + com.fasterxml.jackson.core:jackson-databind:[2.17.1] + io.projectreactor.netty:reactor-netty:[1.1.19] + org.springframework.boot:spring-boot-configuration-processor:[3.3.0] + org.springframework.boot:spring-boot-starter:[3.3.0] + org.springframework.boot:spring-boot-starter-log4j2:[3.3.0] + org.springframework:spring-context:[6.1.8] diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManagementConfiguration.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManagementConfiguration.java index af2ca6653a5a..4b7ca99db962 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManagementConfiguration.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManagementConfiguration.java @@ -19,7 +19,7 @@ class FeatureManagementConfiguration { /** * Creates Feature Manager - * + * * @param context ApplicationContext * @param featureManagementConfigurations Configuration Properties for Feature Flags * @param properties Feature Management configuration properties diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManager.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManager.java index 1805b0367627..04be3548066f 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManager.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/FeatureManager.java @@ -38,7 +38,7 @@ public class FeatureManager { /** * Can be called to check if a feature is enabled or disabled. - * + * * @param context ApplicationContext * @param featureManagementConfigurations Configuration Properties for Feature Flags * @param properties FeatureManagementConfigProperties @@ -51,9 +51,9 @@ public class FeatureManager { } /** - * Checks to see if the feature is enabled. If enabled it check each filter, once a single filter returns true it - * returns true. If no filter returns true, it returns false. If there are no filters, it returns true. If feature - * isn't found it returns false. + * Checks to see if the feature is enabled. If enabled it check each filter, once a single filter + * returns true it returns true. If no filter returns true, it returns false. If there are no + * filters, it returns true. If feature isn't found it returns false. * * @param feature Feature being checked. * @return state of the feature @@ -64,9 +64,9 @@ public Mono isEnabledAsync(String feature) { } /** - * Checks to see if the feature is enabled. If enabled it check each filter, once a single filter returns true it - * returns true. If no filter returns true, it returns false. If there are no filters, it returns true. If feature - * isn't found it returns false. + * Checks to see if the feature is enabled. If enabled it check each filter, once a single filter + * returns true it returns true. If no filter returns true, it returns false. If there are no + * filters, it returns true. If feature isn't found it returns false. * * @param feature Feature being checked. * @return state of the feature diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/AlwaysOnFilter.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/AlwaysOnFilter.java index f4f67aafd13b..d45aaddb70ed 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/AlwaysOnFilter.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/AlwaysOnFilter.java @@ -9,6 +9,12 @@ */ public final class AlwaysOnFilter implements FeatureFilter { + /** + * Creates an instance of {@link AlwaysOnFilter} + */ + public AlwaysOnFilter() { + } + @Override public boolean evaluate(FeatureFilterEvaluationContext context) { return true; diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/PercentageFilter.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/PercentageFilter.java index 1381ee64da5d..256ce9b537fd 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/PercentageFilter.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/PercentageFilter.java @@ -2,18 +2,23 @@ // Licensed under the MIT License. package com.azure.spring.cloud.feature.management.filters; -import static com.azure.spring.cloud.feature.management.models.FilterParameters.PERCENTAGE_FILTER_SETTING; - +import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; +import static com.azure.spring.cloud.feature.management.models.FilterParameters.PERCENTAGE_FILTER_SETTING; /** * A feature filter that can be used to activate a feature based on a random percentage. */ public final class PercentageFilter implements FeatureFilter { + /** + * Creates an instance of {@link PercentageFilter} + */ + public PercentageFilter() { + } + private static final Logger LOGGER = LoggerFactory.getLogger(PercentageFilter.class); /** diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/TimeWindowFilter.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/TimeWindowFilter.java index cf23b15634b7..feffbc5a8ffd 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/TimeWindowFilter.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/filters/TimeWindowFilter.java @@ -2,24 +2,29 @@ // Licensed under the MIT License. package com.azure.spring.cloud.feature.management.filters; -import static com.azure.spring.cloud.feature.management.models.FilterParameters.TIME_WINDOW_FILTER_SETTING_END; -import static com.azure.spring.cloud.feature.management.models.FilterParameters.TIME_WINDOW_FILTER_SETTING_START; +import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.util.StringUtils; - -import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; +import static com.azure.spring.cloud.feature.management.models.FilterParameters.TIME_WINDOW_FILTER_SETTING_END; +import static com.azure.spring.cloud.feature.management.models.FilterParameters.TIME_WINDOW_FILTER_SETTING_START; /** * A feature filter that can be used at activate a feature based on a time window. */ public final class TimeWindowFilter implements FeatureFilter { + /** + * Creates an instance of {@link TimeWindowFilter} + */ + public TimeWindowFilter() { + } + private static final Logger LOGGER = LoggerFactory.getLogger(TimeWindowFilter.class); /** diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementConstants.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementConstants.java index d3aae1c796c7..1ce1fc46aca3 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementConstants.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementConstants.java @@ -3,7 +3,7 @@ package com.azure.spring.cloud.feature.management.implementation; public class FeatureManagementConstants { - + public static final String DEFAULT_REQUIREMENT_TYPE = "Any"; } diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementProperties.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementProperties.java index 3bacf0efa7ca..12c14bcb325c 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementProperties.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/FeatureManagementProperties.java @@ -3,6 +3,8 @@ package com.azure.spring.cloud.feature.management.implementation; import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import org.slf4j.Logger; @@ -10,6 +12,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import com.azure.spring.cloud.feature.management.implementation.models.Feature; +import com.azure.spring.cloud.feature.management.implementation.models.ServerSideFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; @@ -26,6 +29,8 @@ public class FeatureManagementProperties extends HashMap { private static final long serialVersionUID = -1642032123104805346L; + private static final String FEATURE_FLAG_SNAKE_CASE = "feature_flags"; + /** * Map of all Feature Flags that use Feature Filters. */ @@ -46,35 +51,60 @@ public void putAll(Map m) { if (m == null) { return; } - // Need to reset or switch between on/off to conditional doesn't work featureManagement = new HashMap<>(); onOff = new HashMap<>(); - Map features = removePrefixes(m, "featureManagement"); + // try to parse the properties by server side schema as default + tryServerSideSchema(m); - if (!features.isEmpty()) { - m = features; + if (featureManagement.isEmpty() && onOff.isEmpty()) { + tryClientSideSchema(m); } + } - for (String key : m.keySet()) { - addToFeatures(m, key, ""); + private void tryServerSideSchema(Map features) { + if (features.keySet().isEmpty()) { + return; } + // check if FeatureFlags section exist + String featureFlagsSectionKey = ""; + for (String key : features.keySet()) { + if (FEATURE_FLAG_SNAKE_CASE.equalsIgnoreCase(key)) { + featureFlagsSectionKey = key; + break; + } + } + if (featureFlagsSectionKey.isEmpty()) { + return; + } + + // get FeatureFlags section and parse + final Object featureFlagsObject = features.get(featureFlagsSectionKey); + if (Map.class.isAssignableFrom(featureFlagsObject.getClass())) { + final Map featureFlagsSection = (Map) featureFlagsObject; + for (String key : featureFlagsSection.keySet()) { + addServerSideFeature(featureFlagsSection, key); + } + } else { + if (List.class.isAssignableFrom(featureFlagsObject.getClass())) { + final List featureFlagsSection = (List) featureFlagsObject; + for (Object flag : featureFlagsSection) { + addServerSideFeature((Map) flag, null); + } + } + } } - @SuppressWarnings("unchecked") - private Map removePrefixes(Map m, - String prefix) { - Map removedPrefix = new HashMap<>(); - if (m.containsKey(prefix)) { - removedPrefix = (Map) m.get(prefix); + private void tryClientSideSchema(Map features) { + for (String key : features.keySet()) { + addFeature(features, key, ""); } - return removedPrefix; } @SuppressWarnings("unchecked") - private void addToFeatures(Map features, String key, String combined) { + private void addFeature(Map features, String key, String combined) { Object featureValue = features.get(key); if (!combined.isEmpty() && !combined.endsWith(".")) { combined += "."; @@ -93,7 +123,7 @@ private void addToFeatures(Map features, Str if (Map.class.isAssignableFrom(featureValue.getClass())) { features = (Map) featureValue; for (String fKey : features.keySet()) { - addToFeatures(features, fKey, combined + key); + addFeature(features, fKey, combined + key); } } } else { @@ -105,6 +135,51 @@ private void addToFeatures(Map features, Str } } + private void addServerSideFeature(Map features, String key) { + Object featureValue = null; + if (key != null) { + featureValue = features.get(key); + } else { + featureValue = features; + } + + ServerSideFeature serverSideFeature = null; + try { + LinkedHashMap ff = new LinkedHashMap(); + if (featureValue.getClass().isAssignableFrom(LinkedHashMap.class.getClass())) { + ff = (LinkedHashMap) featureValue; + } + LinkedHashMap conditions = new LinkedHashMap(); + if (ff.containsKey("conditions") + && ff.get("conditions").getClass().isAssignableFrom(LinkedHashMap.class.getClass())) { + conditions = (LinkedHashMap) ff.get("conditions"); + } + + if (conditions.get("client_filters") instanceof List) { + conditions.put("client_filters", null); + } + + serverSideFeature = MAPPER.convertValue(featureValue, ServerSideFeature.class); + } catch (IllegalArgumentException e) { + LOGGER.error("Found invalid feature {} with value {}.", key, featureValue.toString()); + } + + if (serverSideFeature != null && serverSideFeature.getId() != null) { + if (serverSideFeature.getConditions() != null + && serverSideFeature.getConditions().getClientFilters() != null + && serverSideFeature.getConditions().getClientFilters().size() > 0) { + final Feature feature = new Feature(); + feature.setKey(serverSideFeature.getId()); + feature.setEvaluate(serverSideFeature.isEnabled()); + feature.setEnabledFor(serverSideFeature.getConditions().getClientFilters()); + feature.setRequirementType(serverSideFeature.getConditions().getRequirementType()); + featureManagement.put(serverSideFeature.getId(), feature); + } else { + onOff.put(serverSideFeature.getId(), serverSideFeature.isEnabled()); + } + } + } + /** * @return the featureManagement */ diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Conditions.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Conditions.java new file mode 100644 index 000000000000..2165f4b4d135 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Conditions.java @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.feature.management.implementation.models; + +import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Map; + +import static com.azure.spring.cloud.feature.management.implementation.FeatureManagementConstants.DEFAULT_REQUIREMENT_TYPE; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Conditions { + @JsonProperty("client_filters") + private Map clientFilters; + + @JsonProperty("requirement_type") + private String requirementType = DEFAULT_REQUIREMENT_TYPE; + + /** + * @return the requirementType + */ + public String getRequirementType() { + return requirementType; + } + + /** + * @param requirementType the requirementType to set + */ + public void setRequirementType(String requirementType) { + this.requirementType = requirementType; + } + + /** + * @return the enabledFor + */ + public Map getClientFilters() { + return clientFilters; + } + + /** + * @param clientFilters the clientFilters to set + */ + public void setClientFilters(Map clientFilters) { + this.clientFilters = clientFilters; + } + +} diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Feature.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Feature.java index 555505b56a68..85f0f12841ea 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Feature.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/Feature.java @@ -4,7 +4,6 @@ import static com.azure.spring.cloud.feature.management.implementation.FeatureManagementConstants.DEFAULT_REQUIREMENT_TYPE; -import java.util.HashMap; import java.util.Map; import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; @@ -23,12 +22,12 @@ public class Feature { @JsonProperty("evaluate") private Boolean evaluate = true; - @JsonProperty("requirement-type") - private String requirementType = DEFAULT_REQUIREMENT_TYPE;; - @JsonProperty("enabled-for") private Map enabledFor; + @JsonProperty("requirement-type") + private String requirementType = DEFAULT_REQUIREMENT_TYPE; + /** * @return the key */ @@ -67,7 +66,7 @@ public Map getEnabledFor() { /** * @param enabledFor the enabledFor to set */ - public void setEnabledFor(HashMap enabledFor) { + public void setEnabledFor(Map enabledFor) { this.enabledFor = enabledFor; } diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/ServerSideFeature.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/ServerSideFeature.java new file mode 100644 index 000000000000..3b3213ee804c --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/implementation/models/ServerSideFeature.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.feature.management.implementation.models; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * App Configuration Feature defines the feature name and a Map of FeatureFilterEvaluationContexts. + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class ServerSideFeature { + @JsonProperty("id") + private String id; + + @JsonProperty("description") + private String description; + + @JsonProperty("enabled") + private boolean enabled; + + @JsonProperty("conditions") + private Conditions conditions; + + /** + * @return the id + */ + public String getId() { + return id; + } + + /** + * @param id the id to set + */ + public void setId(String id) { + this.id = id; + } + + /** + * @return the enabled + */ + public boolean isEnabled() { + return enabled; + } + + /** + * @param enabled the enabled to set + */ + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + /** + * @return the description + * */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + * */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the conditions + * */ + public Conditions getConditions() { + return conditions; + } + + /** + * @param conditions the conditions to set + * */ + public void setConditions(Conditions conditions) { + this.conditions = conditions; + } +} diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/models/FeatureFilterEvaluationContext.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/models/FeatureFilterEvaluationContext.java index 623785e621b0..449c21901dd3 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/models/FeatureFilterEvaluationContext.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/models/FeatureFilterEvaluationContext.java @@ -2,18 +2,24 @@ // Licensed under the MIT License. package com.azure.spring.cloud.feature.management.models; -import java.util.HashMap; -import java.util.Map; - import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.HashMap; +import java.util.Map; + /** * Context passed into Feature Filters used for evaluation. */ @JsonIgnoreProperties(ignoreUnknown = true) public final class FeatureFilterEvaluationContext { + /** + * Creates an instance of {@link FeatureFilterEvaluationContext} + */ + public FeatureFilterEvaluationContext() { + } + private String name; @JsonProperty("parameters") @@ -22,6 +28,7 @@ public final class FeatureFilterEvaluationContext { private String featureName; /** + * Return the name * @return the name */ public String getName() { @@ -29,6 +36,7 @@ public String getName() { } /** + * Set the name * @param name the name to set */ public void setName(String name) { @@ -36,6 +44,7 @@ public void setName(String name) { } /** + * Return the parameters * @return the parameters */ public Map getParameters() { @@ -47,6 +56,7 @@ public Map getParameters() { } /** + * Set the parameters * @param parameters the parameters to set */ public void setParameters(Map parameters) { @@ -54,6 +64,7 @@ public void setParameters(Map parameters) { } /** + * Return the featureName * @return the featureName */ public String getFeatureName() { @@ -61,6 +72,7 @@ public String getFeatureName() { } /** + * Set the featureName * @param featureName the featureName to set */ public void setFeatureName(String featureName) { diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingContext.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingContext.java index cfe2c1ca465e..36be6e39a6c6 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingContext.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingContext.java @@ -10,21 +10,25 @@ public interface TargetingContext { /** + * Return the userId * @return the userId */ String getUserId(); /** + * Set the userId * @param userId the userId to set */ void setUserId(String userId); /** + * Return the groups * @return the groups */ List getGroups(); /** + * Set the groups * @param groups the groups to set */ void setGroups(List groups); diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingEvaluationOptions.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingEvaluationOptions.java index cdabe7a700fb..3f14eeb4b733 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingEvaluationOptions.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingEvaluationOptions.java @@ -7,6 +7,12 @@ */ public final class TargetingEvaluationOptions { + /** + * Creates an instance of {@link TargetingEvaluationOptions} + */ + public TargetingEvaluationOptions() { + } + private boolean ignoreCase; /** diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingFilterContext.java b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingFilterContext.java index bb44295b5644..e22e6dc97040 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingFilterContext.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/java/com/azure/spring/cloud/feature/management/targeting/TargetingFilterContext.java @@ -9,6 +9,12 @@ */ public final class TargetingFilterContext implements TargetingContext { + /** + * Creates an instance of {@link TargetingFilterContext} + */ + public TargetingFilterContext() { + } + private String userId; private List groups; diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-feature-management/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 52% rename from sdk/spring/spring-cloud-azure-feature-management/src/main/resources/META-INF/spring.factories rename to sdk/spring/spring-cloud-azure-feature-management/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index caf7449fab4b..fa6176d396d6 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/main/resources/META-INF/spring.factories +++ b/sdk/spring/spring-cloud-azure-feature-management/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.azure.spring.cloud.feature.management.FeatureManagementConfiguration \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ClientSideFeatureManagementPropertiesTest.java b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ClientSideFeatureManagementPropertiesTest.java new file mode 100644 index 000000000000..fa0bd49a0457 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ClientSideFeatureManagementPropertiesTest.java @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.feature.management; + +import com.azure.spring.cloud.feature.management.implementation.FeatureManagementProperties; +import com.azure.spring.cloud.feature.management.implementation.models.Feature; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = FeatureManagementProperties.class) +@SpringBootTest(classes = { SpringBootTest.class }) +@ActiveProfiles("client") +public class ClientSideFeatureManagementPropertiesTest { + @Autowired + private FeatureManagementProperties clientSideProperties; + + @Test + void onOffMapTest() { + assertTrue(clientSideProperties.getOnOff().get("gamma")); + } + + @Test + void featureManagementTest() { + final Feature alphaFeatureItem = clientSideProperties.getFeatureManagement().get("alpha"); + assertEquals(alphaFeatureItem.getKey(), "alpha"); + assertEquals(alphaFeatureItem.getEnabledFor().size(), 1); + assertEquals(alphaFeatureItem.getEnabledFor().get(0).getName(), "randomFilter"); + + final Feature betaFeatureItem = clientSideProperties.getFeatureManagement().get("beta"); + assertEquals(betaFeatureItem.getKey(), "beta"); + assertEquals(betaFeatureItem.getEnabledFor().size(), 1); + assertEquals(betaFeatureItem.getEnabledFor().get(0).getName(), "timeWindowFilter"); + } +} diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/FeatureManagerTest.java b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/FeatureManagerTest.java index 9933722a018e..2f30f601308d 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/FeatureManagerTest.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/FeatureManagerTest.java @@ -26,6 +26,7 @@ import com.azure.spring.cloud.feature.management.filters.FeatureFilter; import com.azure.spring.cloud.feature.management.implementation.FeatureManagementConfigProperties; import com.azure.spring.cloud.feature.management.implementation.FeatureManagementProperties; +import com.azure.spring.cloud.feature.management.implementation.TestConfiguration; import com.azure.spring.cloud.feature.management.implementation.models.Feature; import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; import com.azure.spring.cloud.feature.management.models.FilterNotFoundException; @@ -159,7 +160,7 @@ public void allOn() { assertTrue(featureManager.isEnabledAsync("On").block()); } - + @Test public void oneOffAny() { HashMap features = new HashMap<>(); @@ -180,7 +181,7 @@ public void oneOffAny() { assertTrue(featureManager.isEnabledAsync("On").block()); } - + @Test public void oneOffAll() { HashMap features = new HashMap<>(); diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ServerSideFeatureManagementPropertiesListTest.java b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ServerSideFeatureManagementPropertiesListTest.java new file mode 100644 index 000000000000..615bf9a99e58 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ServerSideFeatureManagementPropertiesListTest.java @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.feature.management; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import com.azure.spring.cloud.feature.management.implementation.FeatureManagementProperties; + +public class ServerSideFeatureManagementPropertiesListTest { + + private FeatureManagementProperties serverSideProperties; + + @Test + void featureManagementTest() { + serverSideProperties = new FeatureManagementProperties(); + Map> test = new HashMap<>(); + Map alpha = Map.of("id", "Alpha", "enabled", true); + + Map randomFilter = Map.of("name", "Microsoft.Random", "parameters", Map.of("Value", 50)); + Map beta = Map.of("id", "Beta", "enabled", true, "conditions", + Map.of("client_filters", Map.of("0", randomFilter))); + + test.put("feature_flags", List.of(alpha, beta)); + serverSideProperties.putAll(test); + assertEquals(1, serverSideProperties.getOnOff().size()); + assertEquals(1, serverSideProperties.getFeatureManagement().size()); + } + +} diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ServerSideFeatureManagementPropertiesTest.java b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ServerSideFeatureManagementPropertiesTest.java new file mode 100644 index 000000000000..67d1555e3b90 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/ServerSideFeatureManagementPropertiesTest.java @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.feature.management; + +import com.azure.spring.cloud.feature.management.implementation.FeatureManagementProperties; +import com.azure.spring.cloud.feature.management.implementation.models.Feature; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@ExtendWith(SpringExtension.class) +@EnableConfigurationProperties(value = FeatureManagementProperties.class) +@SpringBootTest(classes = { SpringBootTest.class }) +@ActiveProfiles("server") +public class ServerSideFeatureManagementPropertiesTest { + @Autowired + private FeatureManagementProperties serverSideProperties; + + @Test + void onOffMapTest() { + assertTrue(serverSideProperties.getOnOff().get("Gamma")); + } + + @Test + void featureManagementTest() { + final Feature alphaFeatureItem = serverSideProperties.getFeatureManagement().get("Alpha"); + assertEquals(alphaFeatureItem.getKey(), "Alpha"); + assertEquals(alphaFeatureItem.getEnabledFor().size(), 1); + assertEquals(alphaFeatureItem.getEnabledFor().get(0).getName(), "Microsoft.Random"); + + final Feature betaFeatureItem = serverSideProperties.getFeatureManagement().get("Beta"); + assertEquals(betaFeatureItem.getKey(), "Beta"); + assertEquals(betaFeatureItem.getEnabledFor().size(), 1); + assertEquals(betaFeatureItem.getEnabledFor().get(0).getName(), "Microsoft.TimeWindowFilter"); + + final Boolean deltaFeatureItem = serverSideProperties.getOnOff().get("Delta"); + assertTrue(deltaFeatureItem); + } + +} diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/filters/TargetingFilterTest.java b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/filters/TargetingFilterTest.java index 3fc82cad39f7..19c06b3ce4c7 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/filters/TargetingFilterTest.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/filters/TargetingFilterTest.java @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import com.azure.spring.cloud.feature.management.TestConfiguration; +import com.azure.spring.cloud.feature.management.implementation.TestConfiguration; import com.azure.spring.cloud.feature.management.models.FeatureFilterEvaluationContext; import com.azure.spring.cloud.feature.management.models.TargetingException; import com.azure.spring.cloud.feature.management.targeting.TargetingContext; diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/TestConfiguration.java b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/implementation/TestConfiguration.java similarity index 76% rename from sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/TestConfiguration.java rename to sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/implementation/TestConfiguration.java index d85ecd9af476..9f306b0e695c 100644 --- a/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/TestConfiguration.java +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/java/com/azure/spring/cloud/feature/management/implementation/TestConfiguration.java @@ -1,13 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.feature.management; +package com.azure.spring.cloud.feature.management.implementation; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.azure.spring.cloud.feature.management.implementation.FeatureManagementConfigProperties; - @Configuration @ConfigurationProperties public class TestConfiguration { diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/resources/application-client.yaml b/sdk/spring/spring-cloud-azure-feature-management/src/test/resources/application-client.yaml new file mode 100644 index 000000000000..6d4147cb7573 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/resources/application-client.yaml @@ -0,0 +1,14 @@ +feature-management: + alpha: + enabled-for: + - name: randomFilter + parameters: + value: 50 + beta: + enabled-for: + - + name: timeWindowFilter + parameters: + start: 2023-12-18T02:00:00+08:00 + end: 2023-12-18T03:00:00+08:00 + gamma: true diff --git a/sdk/spring/spring-cloud-azure-feature-management/src/test/resources/application-server.yaml b/sdk/spring/spring-cloud-azure-feature-management/src/test/resources/application-server.yaml new file mode 100644 index 000000000000..de789c7baf3a --- /dev/null +++ b/sdk/spring/spring-cloud-azure-feature-management/src/test/resources/application-server.yaml @@ -0,0 +1,28 @@ +feature_management: + feature_flags: + - + id: Alpha + enabled: true + conditions: + client_filters: + - + name: Microsoft.Random + parameters: + Value: 50 + - + id: Beta + enabled: true + conditions: + client_filters: + - name: Microsoft.TimeWindowFilter + parameters: + Start: "Thu, 29 Jun 2023 07:00:00 GMT" + End: "Wed, 30 Aug 2023 07:00:00 GMT" + - + id: Gamma + enabled: true + + - id: Delta + enabled: true + conditions: + client_filters: {} diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml index 211705a33bf8..955af8fcb267 100644 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml +++ b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/pom.xml @@ -1,72 +1,64 @@ - - 4.0.0 - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 org.springframework.boot spring-boot-starter-parent - 2.7.18 - + 3.3.0 + - - com.azure.spring - spring-cloud-azure-integration-test-appconfiguration-config - 1.0.0 - - - true - - - - - com.azure.spring - spring-cloud-azure-starter-appconfiguration-config - 4.20.0-beta.1 - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-test - 2.7.18 - test - - - - - - - org.apache.maven.plugins - maven-failsafe-plugin - 3.2.5 - - - default - - integration-test - - - - ${skipSpringITs} - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.22.0 - - - ${skipSpringITs} - - - - - + com.azure.spring + spring-cloud-azure-integration-test-appconfiguration-config + 1.0.0 + + 17 + true + + + + com.azure.spring + spring-cloud-azure-starter-appconfiguration-config + 5.14.0-beta.1 + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + 3.3.0 + test + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.2.5 + + + default + + integration-test + + + ${skipSpringITs} + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.0 + + ${skipSpringITs} + + + + diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/AppConfiguration.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/AppConfiguration.java index 5bce4ecf9ae7..405ee218ae93 100644 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/AppConfiguration.java +++ b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/AppConfiguration.java @@ -1,32 +1,14 @@ package com.azure.spring.cloud.config; -import com.azure.spring.cloud.config.aad.CustomClient; -import com.azure.spring.cloud.config.connectionstring.CustomSecretClient; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; -import com.azure.spring.cloud.feature.management.filters.PercentageFilter; - @Configuration public class AppConfiguration { - /** - * Define the authentication method to App Configuration store, it should be set by properties in test case. - * When set to "AzureActiveDirectory", need to customize token credential using ConfigurationClientBuilder. - * When set to "ConnectionString", no need to customize token credential using ConfigurationClientBuilder. - */ - @Value("${authMethod}") - private String authMethod; - - @Bean - public BaseCustomClient azureCredentials(Environment environment) { - return Constants.AZURE_ACTIVE_DIRECTORY.equals(authMethod) ? new CustomClient(environment) : new CustomSecretClient(environment); - } - @Bean - public PercentageFilter percentageFilter() { - return new PercentageFilter(); + public CustomClient azureCredentials(Environment environment) { + return new CustomClient(environment); } -} +} \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/Constants.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/Constants.java deleted file mode 100644 index bca6abb1deb8..000000000000 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/Constants.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.azure.spring.cloud.config; - -public class Constants { - public static final String CONNECTION_STRING = "ConnectionString"; - public static final String AZURE_ACTIVE_DIRECTORY = "AzureActiveDirectory"; -} diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/BaseCustomClient.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/CustomClient.java similarity index 54% rename from sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/BaseCustomClient.java rename to sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/CustomClient.java index d4ccfb56f4cf..0e565ca57f25 100644 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/BaseCustomClient.java +++ b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/CustomClient.java @@ -1,20 +1,25 @@ package com.azure.spring.cloud.config; -import com.azure.core.credential.TokenCredential; -import com.azure.identity.AzureAuthorityHosts; -import com.azure.identity.EnvironmentCredentialBuilder; import org.springframework.core.env.Environment; import org.springframework.util.StringUtils; -public class BaseCustomClient { +import com.azure.core.credential.TokenCredential; +import com.azure.data.appconfiguration.ConfigurationClientBuilder; +import com.azure.identity.AzureAuthorityHosts; +import com.azure.identity.EnvironmentCredentialBuilder; +import com.azure.security.keyvault.secrets.SecretClientBuilder; +import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; +import com.azure.spring.cloud.appconfiguration.config.SecretClientCustomizer; +public class CustomClient implements ConfigurationClientCustomizer, SecretClientCustomizer { + private final Environment environment; - - public BaseCustomClient(Environment environment) { + + public CustomClient(Environment environment) { this.environment = environment; } - protected TokenCredential buildCredential() { + TokenCredential buildCredential() { EnvironmentCredentialBuilder cred = new EnvironmentCredentialBuilder(); String authorityHost = environment.getProperty("AZURE_AUTHORITY_HOST"); if (StringUtils.hasText(authorityHost)) { @@ -24,7 +29,18 @@ protected TokenCredential buildCredential() { cred.authorityHost(AzureAuthorityHosts.AZURE_CHINA); } } - + return cred.build(); } -} + + @Override + public void customize(ConfigurationClientBuilder builder, String endpoint) { + builder.credential(buildCredential()); + } + + @Override + public void customize(SecretClientBuilder builder, String endpoint) { + builder.credential(buildCredential()); + } + +} \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/aad/LoadConfigsTest.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/LoadConfigsTest.java similarity index 54% rename from sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/aad/LoadConfigsTest.java rename to sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/LoadConfigsTest.java index 485c4a45cad7..07ece1c18a57 100644 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/aad/LoadConfigsTest.java +++ b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/LoadConfigsTest.java @@ -1,56 +1,35 @@ -package com.azure.spring.cloud.config.aad; +package com.azure.spring.cloud.config; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.azure.spring.cloud.config.Constants; -import com.azure.spring.cloud.config.MessageProperties; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.test.context.TestPropertySource; -import com.azure.spring.cloud.feature.management.FeatureManager; -import com.azure.spring.cloud.feature.management.web.FeatureManagerSnapshot; - @SpringBootTest(classes = LoadConfigsTest.class) @TestPropertySource(properties = { - // When the endpoint of an App Configuration store is specified, need to set "authMethod" as "AzureActiveDirectory". - // So that ConfigurationClientBuilder and SecretClientBuilder are both customized. - "authMethod=" + Constants.AZURE_ACTIVE_DIRECTORY, "spring.cloud.azure.appconfiguration.stores[0].endpoint= ${STORE_NAME}", "spring.cloud.azure.appconfiguration.stores[0].feature-flags.enabled= true" }) @Configuration @EnableConfigurationProperties(value = MessageProperties.class) -@EnableAutoConfiguration public class LoadConfigsTest { @Autowired private MessageProperties properties; - + @Autowired private Environment env; - @Autowired - private FeatureManager featureManager; - - @Autowired - private FeatureManagerSnapshot featureManagerSnapshot; - + @SuppressWarnings("null") @Test public void sampleTest() { assertEquals("Test", properties.getMessage()); assertEquals("From Key Vault", properties.getSecret()); assertTrue(env.getProperty("feature-management.Alpha", Boolean.class)); - - assertTrue(featureManager.isEnabled("Alpha")); - Boolean random = featureManagerSnapshot.isEnabled("Random"); - for (int i = 0; i < 1000; i++) { - assertEquals(random, featureManagerSnapshot.isEnabled("Random")); - } } } diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/aad/CustomClient.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/aad/CustomClient.java deleted file mode 100644 index 29bc344f361c..000000000000 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/aad/CustomClient.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.azure.spring.cloud.config.aad; - -import com.azure.spring.cloud.config.BaseCustomClient; -import org.springframework.core.env.Environment; - -import com.azure.data.appconfiguration.ConfigurationClientBuilder; -import com.azure.security.keyvault.secrets.SecretClientBuilder; -import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; -import com.azure.spring.cloud.appconfiguration.config.SecretClientCustomizer; - -public class CustomClient extends BaseCustomClient implements ConfigurationClientCustomizer, SecretClientCustomizer { - - public CustomClient(Environment environment) { - super(environment); - } - - @Override - public void customize(ConfigurationClientBuilder builder, String endpoint) { - builder.credential(buildCredential()); - } - - @Override - public void customize(SecretClientBuilder builder, String endpoint) { - builder.credential(buildCredential()); - } - -} diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/connectionstring/CustomSecretClient.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/connectionstring/CustomSecretClient.java deleted file mode 100644 index 33eda71d14a3..000000000000 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/connectionstring/CustomSecretClient.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.azure.spring.cloud.config.connectionstring; - -import com.azure.security.keyvault.secrets.SecretClientBuilder; -import com.azure.spring.cloud.appconfiguration.config.SecretClientCustomizer; -import com.azure.spring.cloud.config.BaseCustomClient; -import org.springframework.core.env.Environment; - -public class CustomSecretClient extends BaseCustomClient implements SecretClientCustomizer { - public CustomSecretClient(Environment environment) { - super(environment); - } - - @Override - public void customize(SecretClientBuilder builder, String endpoint) { - builder.credential(buildCredential()); - } - -} diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/connectionstring/LoadConfigsTest.java b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/connectionstring/LoadConfigsTest.java deleted file mode 100644 index 8719d2d78b86..000000000000 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/src/test/java/com/azure/spring/cloud/config/connectionstring/LoadConfigsTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.azure.spring.cloud.config.connectionstring; - -import com.azure.spring.cloud.config.Constants; -import com.azure.spring.cloud.config.MessageProperties; -import com.azure.spring.cloud.feature.management.FeatureManager; -import com.azure.spring.cloud.feature.management.web.FeatureManagerSnapshot; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; -import org.springframework.test.context.TestPropertySource; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -@SpringBootTest(classes = LoadConfigsTest.class) -@TestPropertySource(properties = { - // When the connection-string of an App Configuration store is specified, need to set "authMethod" as "ConnectionString". - // So that only SecretClientBuilder is customized. - "authMethod=" + Constants.CONNECTION_STRING, - "spring.cloud.azure.appconfiguration.stores[0].connection-string=${APP_CONFIGURATION_CONNECTION_STRING}", - "spring.cloud.azure.appconfiguration.stores[0].feature-flags.enabled= true" }) -@Configuration -@EnableConfigurationProperties(value = MessageProperties.class) -@EnableAutoConfiguration -public class LoadConfigsTest { - - @Autowired - private MessageProperties properties; - - @Autowired - private Environment env; - - @Autowired - private FeatureManager featureManager; - - @Autowired - private FeatureManagerSnapshot featureManagerSnapshot; - - @Test - public void sampleTest() { - assertEquals("Test", properties.getMessage()); - assertEquals("From Key Vault", properties.getSecret()); - assertTrue(env.getProperty("feature-management.Alpha", Boolean.class)); - - assertTrue(featureManager.isEnabled("Alpha")); - Boolean random = featureManagerSnapshot.isEnabled("Random"); - for (int i = 0; i < 1000; i++) { - assertEquals(random, featureManagerSnapshot.isEnabled("Random")); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/test-resources.json b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/test-resources.json index 86292e751d08..087ea8592bb5 100644 --- a/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/test-resources.json +++ b/sdk/spring/spring-cloud-azure-integration-test-appconfiguration-config/test-resources.json @@ -42,7 +42,6 @@ "keyVaultSecretReference": "[concat('{\"uri\":\"https://',variables('keyVaultName'),parameters('keyVaultDomainSuffix'),'/secrets/',variables('secretName'),'\"}')]", "featureFlagNamePrefix": ".appconfig.featureflag~2F", "featureFlagName": "[concat(variables('featureFlagNamePrefix'), 'Alpha')]", - "randomFlagName": "[concat(variables('featureFlagNamePrefix'), 'Random')]", "featureFlagContentType": "application/vnd.microsoft.appconfig.ff+json;charset=utf-8", "azureAppConfigurationDataOwnerRoleId": "/subscriptions/[parameters('subscriptionId')]/providers/Microsoft.Authorization/roleDefinitions/5ae67dd6-50cb-40e7-96ff-dc2bfa4b606b" }, @@ -130,19 +129,6 @@ "tags": "[variables('tags')]" } }, - { - "type": "Microsoft.AppConfiguration/configurationStores/keyValues", - "apiVersion": "2020-07-01-preview", - "name": "[concat(variables('configStoreName'), '/',variables('randomFlagName'))]", - "dependsOn": [ - "[variables('configStoreName')]" - ], - "properties": { - "value": "{\"id\":\"Random\",\"description\":\"\",\"enabled\":true,\"conditions\":{\"client_filters\":[{\"name\": \"percentageFilter\", \"parameters\": {\"Value\":50}}]}}", - "contentType": "[variables('featureFlagContentType')]", - "tags": "[variables('tags')]" - } - }, { "type": "Microsoft.Authorization/roleAssignments", "apiVersion": "2020-10-01-preview", diff --git a/sdk/spring/spring-cloud-azure-integration-tests/pom.xml b/sdk/spring/spring-cloud-azure-integration-tests/pom.xml index d61d877e01e4..745ab46fd402 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/pom.xml +++ b/sdk/spring/spring-cloud-azure-integration-tests/pom.xml @@ -7,7 +7,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.18 + 3.3.0 @@ -33,6 +33,7 @@ + 17 true @@ -40,72 +41,67 @@ com.azure.spring spring-cloud-azure-starter-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-servicebus-jms - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-keyvault-secrets - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-storage-blob - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-storage-file-share - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-appconfiguration - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring - spring-cloud-azure-starter-data-cosmos - 4.20.0-beta.1 + spring-cloud-azure-starter-cosmos + 5.14.0-beta.1 com.azure.spring - spring-cloud-azure-starter-cosmos - 4.20.0-beta.1 + spring-cloud-azure-starter-data-cosmos + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-stream-binder-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-stream-binder-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-jdbc-mysql - 4.20.0-beta.1 - - - com.azure.spring - spring-cloud-azure-starter-redis - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/ApplicationConfiguration.java b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/ApplicationConfiguration.java index cd3076020680..b2e8cbfd869c 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/ApplicationConfiguration.java +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/ApplicationConfiguration.java @@ -8,7 +8,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; /** diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/AzureCloudTypeEnvironmentPostProcessor.java b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/AzureCloudTypeEnvironmentPostProcessor.java index 3ed5ea01bbe3..5a357212f50c 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/AzureCloudTypeEnvironmentPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/AzureCloudTypeEnvironmentPostProcessor.java @@ -3,11 +3,12 @@ package com.azure.spring.cloud.integration.tests; -import com.azure.spring.cloud.autoconfigure.keyvault.environment.KeyVaultEnvironmentPostProcessor; +import com.azure.spring.cloud.autoconfigure.implementation.keyvault.environment.KeyVaultEnvironmentPostProcessor; import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; import org.apache.commons.logging.Log; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; +import org.springframework.boot.logging.DeferredLog; import org.springframework.core.Ordered; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MapPropertySource; @@ -21,6 +22,10 @@ public class AzureCloudTypeEnvironmentPostProcessor implements EnvironmentPostPr private static final String CLOUD_TYPE_PROPERTY_KEY = "spring.cloud.azure.profile.cloud-type"; private final Log logger; + public AzureCloudTypeEnvironmentPostProcessor() { + this.logger = new DeferredLog(); + } + public AzureCloudTypeEnvironmentPostProcessor(Log logger) { this.logger = logger; } diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/eventhubs/binder/EventHubsBinderConsumeErrorIT.java b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/eventhubs/binder/EventHubsBinderConsumeErrorIT.java index 498cb481f073..f7ce69e7e5cb 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/eventhubs/binder/EventHubsBinderConsumeErrorIT.java +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/eventhubs/binder/EventHubsBinderConsumeErrorIT.java @@ -13,8 +13,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; -import org.springframework.integration.annotation.ServiceActivator; import org.springframework.messaging.Message; +import org.springframework.messaging.support.ErrorMessage; import org.springframework.messaging.support.GenericMessage; import org.springframework.test.context.ActiveProfiles; import reactor.core.publisher.Mono; @@ -63,13 +63,19 @@ Consumer> consume() { } catch (InterruptedException e) { e.printStackTrace(); } - throw new RuntimeException(); + throw new RuntimeException("Consumption exception test"); }; } - @ServiceActivator(inputChannel = "test-eventhub-message.$Default.errors") - void consumeError(Message message) throws InterruptedException { - EXCHANGER.exchange("ERROR!"); + @Bean + Consumer consumeError() { + return exception -> { + try { + EXCHANGER.exchange("ERROR!"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }; } } diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/jdbc/mysql/PasswordlessMySQLIT.java b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/jdbc/mysql/PasswordlessMySQLIT.java index 3570ecd33205..630976eb12cc 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/jdbc/mysql/PasswordlessMySQLIT.java +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/java/com/azure/spring/cloud/integration/tests/jdbc/mysql/PasswordlessMySQLIT.java @@ -19,7 +19,7 @@ /** * Disable this IT in China cloud, because it can't provision MySQL resource in China cloud with test subscription. - * This test will resume running after 2024-04-20 . + * This test will resume running after 2023-02-01 . */ @DisabledIfEnvironmentVariable(named = "AZURE_MYSQL_IT_SKIPRUNNING", matches = "skipRunning") @Disabled("Auth by workload identity is not supported now. Track issue: https://github.com/Azure/azure-sdk-for-java/issues/40897") diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-eventhubs-binder.yml b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-eventhubs-binder.yml index b6ba9703598b..e2a8ec9e546f 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-eventhubs-binder.yml +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-eventhubs-binder.yml @@ -7,9 +7,9 @@ spring: checkpoint-store: account-name: ${AZURE_STORAGE_ACCOUNT_NAME} endpoint: ${AZURE_STORAGE_BLOB_ENDPOINT} + function: + definition: consume;supply stream: - function: - definition: consume;supply bindings: consume-in-0: group: $Default @@ -58,6 +58,7 @@ spring: bindings: consume-in-0: destination: ${AZURE_EVENTHUB_NAME_FOR_BINDER_MESSAGE} + error-handler-definition: consumeError supply-out-0: destination: ${AZURE_EVENTHUB_NAME_FOR_BINDER_MESSAGE} eventhubs: diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-multi.yml b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-multi.yml index 332071d9cb8d..b023fb4b5d6f 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-multi.yml +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-multi.yml @@ -1,8 +1,8 @@ spring: cloud: + function: + definition: queueConsume;queueSupply;topicConsume;topicSupply; stream: - function: - definition: queueConsume;queueSupply;topicConsume;topicSupply; bindings: topicConsume-in-0: destination: topic1 diff --git a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-single.yml b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-single.yml index 47e927dfe74a..a3f45072813f 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-single.yml +++ b/sdk/spring/spring-cloud-azure-integration-tests/src/test/resources/application-servicebus-binder-single.yml @@ -3,10 +3,10 @@ spring: azure: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE1} + function: + definition: queueConsume;queueSupply;topicConsume;topicSupply; stream: default-binder: servicebus - function: - definition: queueConsume;queueSupply;topicConsume;topicSupply; bindings: topicConsume-in-0: destination: topic1 diff --git a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/eventhubs/test-resources.json b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/eventhubs/test-resources.json index 63ed3916b0e7..639d932c91cc 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/eventhubs/test-resources.json +++ b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/eventhubs/test-resources.json @@ -285,7 +285,7 @@ }, { "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2022-05-01", + "apiVersion": "2019-06-01", "name": "[variables('storageAccountName')]", "location": "[variables('location')]", "sku": { @@ -314,8 +314,7 @@ }, "keySource": "Microsoft.Storage" }, - "accessTier": "Hot", - "minimumTlsVersion": "TLS1_2" + "accessTier": "Hot" } }, { diff --git a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json index d9fb8b472c69..5192b534f80a 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json +++ b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json @@ -83,10 +83,10 @@ "description": "Geo-Redundant Backup setting" } }, - // 2024-04-20 17:01:38 + // 2023-02-01 14:02:17 "resourceStartTime": { "type": "int", - "defaultValue": 1713603698 + "defaultValue": 1675231337 }, "currentEpoch": { "type": "int", diff --git a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/storage/test-resources.json b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/storage/test-resources.json index d6f5190ce933..c92c374f10d0 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/storage/test-resources.json +++ b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/storage/test-resources.json @@ -23,7 +23,7 @@ "resources": [ { "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2022-05-01", + "apiVersion": "2019-06-01", "name": "[variables('storageAccountsName')]", "location": "[variables('location')]", "sku": { @@ -52,8 +52,7 @@ }, "keySource": "Microsoft.Storage" }, - "accessTier": "Hot", - "minimumTlsVersion": "TLS1_2" + "accessTier": "Hot" } }, { diff --git a/sdk/spring/spring-cloud-azure-native-reachability/CHANGELOG.md b/sdk/spring/spring-cloud-azure-native-reachability/CHANGELOG.md new file mode 100644 index 000000000000..3f8412d7e674 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-native-reachability/CHANGELOG.md @@ -0,0 +1,19 @@ +# Release History + +## 5.0.0-beta.2 (Unreleased) + +Note: This library is deprecated, and all the reachability metadata have been incorporated into each Spring Cloud Azure library's source code directly. + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + +## 5.0.0-beta.1 (2022-01-18) + +### Features Added + +Support Spring AOT in `spring-cloud-azure-native-reachability` [#33055](https://github.com/Azure/azure-sdk-for-java/pull/33055). diff --git a/sdk/spring/spring-cloud-azure-native-reachability/README.md b/sdk/spring/spring-cloud-azure-native-reachability/README.md new file mode 100644 index 000000000000..e5ead8e6b223 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-native-reachability/README.md @@ -0,0 +1,117 @@ +# Spring Cloud Azure Native Reachability client library for Java + +This library provides the reachability metadata for Spring Cloud Azure libraries when using with Spring Boot 3. To build a native executable, you can add this `spring-cloud-azure-native-reachability` to your dependencies. + +**NOTE**: This library is deprecated, and all the reachability metadata have been incorporated into each Spring Cloud Azure library's source code directly. + +## Getting started + +### Prerequisites +- A [Java Development Kit (JDK)][jdk_link], version 17. +- [Azure Subscription][azure_subscription] +- [Docker](https://docs.docker.com/installation/#installation) for [Buildpacks](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#native-image.developing-your-first-application.buildpacks) usage +- [GraalVM 22.3 - Java 17](https://www.graalvm.org/downloads/) and [Native Image](https://www.graalvm.org/reference-manual/native-image/) for [Native Build Tools](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#native-image.developing-your-first-application.native-build-tools) usage + +### Include the package + +[//]: # ({x-version-update-start;com.azure.spring:spring-cloud-azure-native-reachability;current}) +```xml + + com.azure.spring + spring-cloud-azure-native-reachability + 5.0.0-beta.1 + +``` + +This package is required to enable Spring Cloud Azure AOT support. + +### Generate a native executable using Buildpacks + +Using Maven + +```shell +mvn -Pnative spring-boot:build-image +``` + +Using Gradle: + +```shell +gradle bootBuildImage +``` + +### Generate a native executable using Native Build Tools + +Using Maven + +```shell +mvn -Pnative native:compile +``` + +Using Gradle: + +```shell +gradle nativeCompile +``` + +For more details, please refer to [Getting started with GraalVM Native Application](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#native-image.developing-your-first-application) +documentation. + +## Troubleshooting + +- Fatal error: java.lang.SecurityException: class "com.azure.spring.cloud.xxx"'s signer information does not match signer information of other classes in the same package + + This is a known [issue](https://github.com/Azure/azure-sdk-for-java/issues/30320), the root cause is that the generated classes of Spring AOT are saved into the same package, and the JVM doesn't accept this operation in a signed Jar. + + Create a file *custom.security* with follow content: + + ```properties + jdk.jar.disabledAlgorithms=MD2, MD5, RSA, DSA + ``` + + Update your maven plugin with below configuration: + + ```xml + + + + org.graalvm.buildtools + native-maven-plugin + + + -Djava.security.properties=src/main/resources/custom.security + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + -Djava.security.properties=/workspace/BOOT-INF/classes/custom.security + + + + + + + ``` + + Or the below gradle configuration to your *build.gradle* file: + + ```groovy + graalvmNative { + binaries { + main { + buildArgs('-Djava.security.properties=' + file("src/main/resources/custom.security").absolutePath) + } + } + } + bootRun { + systemProperty("java.security.properties", file("src/main/resources/custom.security").absolutePath) + systemProperty('spring.aot.enabled', 'true') + } + ``` + +[jdk_link]: https://learn.microsoft.com/azure/developer/java/fundamentals/java-jdk-install +[azure_subscription]: https://azure.microsoft.com/free diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md b/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md index 87056a4f02ff..3485bcbccd9d 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,10 +99,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. @@ -66,14 +123,30 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml b/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml index 9850bef7f284..fa229a589135 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml +++ b/sdk/spring/spring-cloud-azure-resourcemanager/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-resourcemanager - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Resource Manager Spring Cloud Azure Resource Manager @@ -32,12 +32,15 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-cloud-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -49,7 +52,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -57,25 +60,25 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework spring-test - 5.3.32 + 6.1.8 test @@ -93,10 +96,73 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -104,6 +170,72 @@ + + + + + empty-javadoc-jar-with-readme + package + + jar + + + javadoc + ${project.basedir}/javadocTemp + + + + empty-source-jar-with-readme + package + + jar + + + sources + ${project.basedir}/sourceTemp + + + + + + org.apache.maven.plugins + maven-antrun-plugin + 3.1.0 + + + copy-readme-to-javadocTemp-and-sourceTemp + prepare-package + + + Deleting existing ${project.basedir}/javadocTemp and + ${project.basedir}/sourceTemp + + + + + Copying ${project.basedir}/../README.md to + ${project.basedir}/javadocTemp/README.md + + + Copying ${project.basedir}/../README.md to + ${project.basedir}/sourceTemp/README.md + + + + + + run + + + + diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ResourceCrud.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ResourceCrud.java index 160f691fb048..98e309caec5d 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ResourceCrud.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ResourceCrud.java @@ -6,8 +6,8 @@ /** * Interface to support CRUD of Azure Resource * - * @param Azure resource type. - * @param Azure resource key type. + * @param Azure resource type + * @param Azure resource key type * @param

Azure resource properties. * */ diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrud.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrud.java index 3bee4e100cab..f480b774a2b9 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrud.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrud.java @@ -8,7 +8,7 @@ import com.azure.resourcemanager.servicebus.models.Queue; import com.azure.resourcemanager.servicebus.models.ServiceBusNamespace; import com.azure.spring.cloud.core.properties.resource.AzureResourceMetadata; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusQueueProperties; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import reactor.util.function.Tuple2; diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicCrud.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicCrud.java index 7326a915814a..9215a7c23612 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicCrud.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicCrud.java @@ -8,7 +8,7 @@ import com.azure.resourcemanager.servicebus.models.ServiceBusNamespace; import com.azure.resourcemanager.servicebus.models.Topic; import com.azure.spring.cloud.core.properties.resource.AzureResourceMetadata; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import reactor.util.function.Tuple2; diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrud.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrud.java index 33120c2e7d9e..4bd7bdf98e35 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrud.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrud.java @@ -8,7 +8,7 @@ import com.azure.resourcemanager.servicebus.models.ServiceBusSubscription; import com.azure.resourcemanager.servicebus.models.Topic; import com.azure.spring.cloud.core.properties.resource.AzureResourceMetadata; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; import org.springframework.lang.Nullable; import reactor.util.function.Tuple3; import reactor.util.function.Tuples; @@ -19,7 +19,7 @@ public class ServiceBusTopicSubscriptionCrud extends AbstractResourceCrud, ServiceBusTopicProperties> { - private final ServiceBusTopicCrud serviceBusTopicCrud; + private ServiceBusTopicCrud serviceBusTopicCrud; public ServiceBusTopicSubscriptionCrud(AzureResourceManager azureResourceManager, AzureResourceMetadata azureResourceMetadata) { this(azureResourceManager, azureResourceMetadata, diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultEventHubsProvisioner.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultEventHubsProvisioner.java index ca1885645e6d..a1edaa0869f2 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultEventHubsProvisioner.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultEventHubsProvisioner.java @@ -8,7 +8,6 @@ import com.azure.spring.cloud.resourcemanager.implementation.crud.EventHubNamespaceCrud; import com.azure.spring.cloud.resourcemanager.implementation.crud.EventHubsConsumerGroupCrud; import com.azure.spring.cloud.resourcemanager.implementation.crud.EventHubsCrud; -import com.azure.spring.cloud.resourcemanager.provisioning.EventHubsProvisioner; import reactor.util.function.Tuples; /** diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultServiceBusProvisioner.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultServiceBusProvisioner.java index 08cd510ad797..d14abd72939e 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultServiceBusProvisioner.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/DefaultServiceBusProvisioner.java @@ -8,9 +8,8 @@ import com.azure.spring.cloud.resourcemanager.implementation.crud.ServiceBusQueueCrud; import com.azure.spring.cloud.resourcemanager.implementation.crud.ServiceBusTopicCrud; import com.azure.spring.cloud.resourcemanager.implementation.crud.ServiceBusTopicSubscriptionCrud; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusQueueProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; import reactor.util.function.Tuples; /** diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/EventHubsProvisioner.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/EventHubsProvisioner.java similarity index 92% rename from sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/EventHubsProvisioner.java rename to sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/EventHubsProvisioner.java index 046707629fe2..c0f791c7fd73 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/EventHubsProvisioner.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/EventHubsProvisioner.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.resourcemanager.provisioning; +package com.azure.spring.cloud.resourcemanager.implementation.provisioning; /** * An interface to provision Event Hubs resources. diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/ServiceBusProvisioner.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/ServiceBusProvisioner.java similarity index 89% rename from sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/ServiceBusProvisioner.java rename to sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/ServiceBusProvisioner.java index 1edd150d5e17..f2e9703a244c 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/ServiceBusProvisioner.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/ServiceBusProvisioner.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.resourcemanager.provisioning; +package com.azure.spring.cloud.resourcemanager.implementation.provisioning; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusQueueProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; /** * An interface to provision Service Bus entity resources. diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusEntityProperties.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusEntityProperties.java similarity index 94% rename from sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusEntityProperties.java rename to sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusEntityProperties.java index 422dc2429236..f3f550882f90 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusEntityProperties.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusEntityProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.resourcemanager.provisioning.properties; +package com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties; import java.time.Duration; diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusQueueProperties.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusQueueProperties.java similarity index 73% rename from sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusQueueProperties.java rename to sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusQueueProperties.java index 13f4539893ac..64bd83e04dfd 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusQueueProperties.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusQueueProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.resourcemanager.provisioning.properties; +package com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties; /** * Queue entity configuration properties of Service Bus. diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusTopicProperties.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusTopicProperties.java similarity index 73% rename from sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusTopicProperties.java rename to sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusTopicProperties.java index b26e280a3321..a15c1c634180 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/ServiceBusTopicProperties.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/implementation/provisioning/properties/ServiceBusTopicProperties.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.resourcemanager.provisioning.properties; +package com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties; /** * Topic entity configuration properties of Service Bus. diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/package-info.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/package-info.java deleted file mode 100644 index 339bc44de08c..000000000000 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Cloud Azure resource provisioner abstractions. - */ -package com.azure.spring.cloud.resourcemanager.provisioning; diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/package-info.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/package-info.java deleted file mode 100644 index 6f43cb262cbb..000000000000 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/main/java/com/azure/spring/cloud/resourcemanager/provisioning/properties/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Properties for provision. - */ -package com.azure.spring.cloud.resourcemanager.provisioning.properties; diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrudTests.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrudTests.java index e6bd1bcb3226..63c42dd05862 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrudTests.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusQueueCrudTests.java @@ -11,7 +11,7 @@ import com.azure.resourcemanager.servicebus.models.ServiceBusNamespace; import com.azure.resourcemanager.servicebus.models.ServiceBusNamespaces; import com.azure.spring.cloud.core.properties.resource.AzureResourceMetadata; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusQueueProperties; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import reactor.util.function.Tuple2; diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrudTests.java b/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrudTests.java index 5e2bba7311c8..4c6358fde40b 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrudTests.java +++ b/sdk/spring/spring-cloud-azure-resourcemanager/src/test/java/com/azure/spring/cloud/resourcemanager/implementation/crud/ServiceBusTopicSubscriptionCrudTests.java @@ -12,7 +12,7 @@ import com.azure.resourcemanager.servicebus.models.Topic; import com.azure.resourcemanager.servicebus.models.Topics; import com.azure.spring.cloud.core.properties.resource.AzureResourceMetadata; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -170,4 +170,5 @@ void testTopicOptionPropertiesSetting() { verify(blank, times(1)).withSizeInMB(topicProperties.getMaxSizeInMegabytes()); verify(blank, times(1)).withDefaultMessageTTL(topicProperties.getDefaultMessageTimeToLive()); } + } diff --git a/sdk/spring/spring-cloud-azure-service/CHANGELOG.md b/sdk/spring/spring-cloud-azure-service/CHANGELOG.md index 4d5324a996d4..b33897d404bd 100644 --- a/sdk/spring/spring-cloud-azure-service/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-service/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,10 +99,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. @@ -66,14 +123,30 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-service/pom.xml b/sdk/spring/spring-cloud-azure-service/pom.xml index b30d0aed7764..7070d9922df6 100644 --- a/sdk/spring/spring-cloud-azure-service/pom.xml +++ b/sdk/spring/spring-cloud-azure-service/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-service - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Service Spring Cloud Azure Service @@ -32,12 +32,15 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-cloud-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -106,7 +109,7 @@ org.apache.kafka kafka-clients - 3.1.2 + 3.7.0 true @@ -118,18 +121,10 @@ true - - - redis.clients - jedis - 3.8.0 - true - - org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -137,25 +132,25 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework spring-test - 5.3.32 + 6.1.8 test @@ -173,6 +168,69 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -181,8 +239,8 @@ - org.apache.kafka:kafka-clients:[3.1.2] - redis.clients:jedis:[3.8.0] + org.apache.kafka:kafka-clients:[3.7.0] + org.postgresql:postgresql:[42.7.3] @@ -191,7 +249,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/BlobCheckpointStoreContainerInitializer.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/BlobCheckpointStoreContainerInitializer.java similarity index 90% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/BlobCheckpointStoreContainerInitializer.java rename to sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/BlobCheckpointStoreContainerInitializer.java index 15bbfda74742..fbfbf5183dc6 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/BlobCheckpointStoreContainerInitializer.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/BlobCheckpointStoreContainerInitializer.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.autoconfigure.eventhubs; +package com.azure.spring.cloud.service.eventhubs; import com.azure.storage.blob.BlobContainerAsyncClient; diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/package-info.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/package-info.java similarity index 52% rename from sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/package-info.java rename to sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/package-info.java index cb6e01a113d8..0ddbe6ad976a 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/package-info.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/package-info.java @@ -2,6 +2,6 @@ // Licensed under the MIT License. /** - * Filter class for Active Directory. + * Azure Event Hubs service abstraction. */ -package com.azure.spring.cloud.autoconfigure.aad.filter; +package com.azure.spring.cloud.service.eventhubs; diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/EventBatchProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/EventBatchProperties.java index a3afb3249b26..956eb4695f76 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/EventBatchProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/EventBatchProperties.java @@ -12,6 +12,12 @@ */ public class EventBatchProperties implements EventProcessorClientProperties.EventBatch { + /** + * Creates an instance of {@link EventBatchProperties}. + */ + public EventBatchProperties() { + } + /** * The max time duration to wait to receive an event before processing events. */ diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/LoadBalancingProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/LoadBalancingProperties.java index 2a150e6ab61b..841570efdab6 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/LoadBalancingProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/LoadBalancingProperties.java @@ -13,6 +13,12 @@ */ public class LoadBalancingProperties implements EventProcessorClientProperties.LoadBalancing { + /** + * Creates an instance of {@link LoadBalancingProperties}. + */ + public LoadBalancingProperties() { + } + /** * The time interval between load balancing update cycles. */ diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/StartPositionProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/StartPositionProperties.java index 3d3feaeeb9c1..4808f3334d83 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/StartPositionProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/eventhubs/properties/StartPositionProperties.java @@ -12,6 +12,12 @@ */ public class StartPositionProperties implements EventProcessorClientProperties.StartPosition { + /** + * Creates an instance of {@link StartPositionProperties}. + */ + public StartPositionProperties() { + } + private String offset; private Long sequenceNumber; private Instant enqueuedDateTime; diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/SpringCloudAzureServiceRuntimeHints.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/SpringCloudAzureServiceRuntimeHints.java new file mode 100644 index 000000000000..3f972747b449 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/SpringCloudAzureServiceRuntimeHints.java @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.service.implementation; + +import com.azure.spring.cloud.service.implementation.storage.common.StorageRetryProperties; +import org.springframework.aot.hint.MemberCategory; +import org.springframework.aot.hint.ReflectionHints; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; + +import java.util.stream.Stream; + +class SpringCloudAzureServiceRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + ReflectionHints reflectionHints = hints.reflection(); + Stream.of(StorageRetryProperties.class) + .forEach(type -> reflectionHints.registerType(type, + builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS))); + } + +} diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/eventhubs/factory/EventProcessorClientBuilderFactory.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/eventhubs/factory/EventProcessorClientBuilderFactory.java index 9d65521a6181..8529fad4f83c 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/eventhubs/factory/EventProcessorClientBuilderFactory.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/eventhubs/factory/EventProcessorClientBuilderFactory.java @@ -82,7 +82,7 @@ protected BiConsumer consumeAmqp @Override protected BiConsumer consumeAmqpRetryOptions() { - return EventProcessorClientBuilder::retry; + return EventProcessorClientBuilder::retryOptions; } @Override diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/KeyVaultProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/KeyVaultProperties.java index 2d88ea3772a3..6da8ebe42252 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/KeyVaultProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/KeyVaultProperties.java @@ -14,4 +14,5 @@ public interface KeyVaultProperties extends AzureProperties, RetryOptionsProvide String getEndpoint(); boolean isChallengeResourceVerificationEnabled(); + } diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/certificates/CertificateClientBuilderFactory.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/certificates/CertificateClientBuilderFactory.java index 8321f670d226..3800529018f4 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/certificates/CertificateClientBuilderFactory.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/certificates/CertificateClientBuilderFactory.java @@ -89,7 +89,7 @@ protected void configureService(CertificateClientBuilder builder) { map.from(certificateClientProperties.getEndpoint()).to(builder::vaultUrl); map.from(certificateClientProperties.getServiceVersion()).to(builder::serviceVersion); map.from(certificateClientProperties.isChallengeResourceVerificationEnabled()) - .whenFalse().to(enabled -> builder.disableChallengeResourceVerification()); + .whenFalse().to(enabled -> builder.disableChallengeResourceVerification()); } @Override diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/secrets/SecretClientBuilderFactory.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/secrets/SecretClientBuilderFactory.java index 3e54e4db1b00..3b009e141f6c 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/secrets/SecretClientBuilderFactory.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/keyvault/secrets/SecretClientBuilderFactory.java @@ -89,7 +89,7 @@ protected void configureService(SecretClientBuilder builder) { map.from(secretClientProperties.getEndpoint()).to(builder::vaultUrl); map.from(secretClientProperties.getServiceVersion()).to(builder::serviceVersion); map.from(secretClientProperties.isChallengeResourceVerificationEnabled()) - .whenFalse().to(enabled -> builder.disableChallengeResourceVerification()); + .whenFalse().to(enabled -> builder.disableChallengeResourceVerification()); } @Override diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java index 7146b7d94b9f..0a900015795d 100644 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java +++ b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/passwordless/AzurePasswordlessProperties.java @@ -3,24 +3,17 @@ package com.azure.spring.cloud.service.implementation.passwordless; -import com.azure.identity.extensions.implementation.enums.AuthProperty; import com.azure.spring.cloud.core.properties.AzureProperties; +import com.azure.spring.cloud.core.properties.PasswordlessProperties; import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; import com.azure.spring.cloud.core.properties.client.ClientProperties; import com.azure.spring.cloud.core.properties.profile.AzureProfileProperties; import com.azure.spring.cloud.core.properties.proxy.ProxyProperties; -import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; -import com.azure.spring.cloud.core.provider.authentication.TokenCredentialOptionsProvider; - -import java.util.Properties; -import java.util.function.BiConsumer; -import java.util.function.Function; /** - * Implement {@link TokenCredentialOptionsProvider} and {@link AzureProfileOptionsProvider} for Spring Cloud Azure - * support for other third party services. + * Implement {@link PasswordlessProperties} for Spring Cloud Azure support for other third party services. */ -public class AzurePasswordlessProperties implements AzureProperties { +public class AzurePasswordlessProperties implements PasswordlessProperties, AzureProperties { private AzureProfileProperties profile = new AzureProfileProperties(); @@ -89,64 +82,4 @@ public void setScopes(String scopes) { this.scopes = scopes; } - public Properties toProperties() { - Properties target = new Properties(); - for (AzurePasswordlessPropertiesMapping m : AzurePasswordlessPropertiesMapping.values()) { - if (m.getter.apply(this) != null) { - m.setter.accept(target, m.getter.apply(this)); - } - } - return target; - } - - private enum AzurePasswordlessPropertiesMapping { - - SCOPES(p -> p.getScopes(), - (p, s) -> p.setProperty(AuthProperty.SCOPES.getPropertyKey(), s)), - - CLIENT_CERTIFICATE_PASSWORD(p -> p.getCredential().getClientCertificatePassword(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey(), s)), - - CLIENT_CERTIFICATE_PATH(p -> p.getCredential().getClientCertificatePath(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey(), s)), - - CLIENT_ID(p -> p.getCredential().getClientId(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_ID.getPropertyKey(), s)), - - CLIENT_SECRET(p -> p.getCredential().getClientSecret(), - (p, s) -> p.setProperty(AuthProperty.CLIENT_SECRET.getPropertyKey(), s)), - - MANAGED_IDENTITY_ENABLED(p -> String.valueOf(p.getCredential().isManagedIdentityEnabled()), - (p, s) -> p.setProperty(AuthProperty.MANAGED_IDENTITY_ENABLED.getPropertyKey(), s)), - - PASSWORD(p -> p.getCredential().getPassword(), - (p, s) -> p.setProperty(AuthProperty.PASSWORD.getPropertyKey(), s)), - - USERNAME(p -> p.getCredential().getUsername(), - (p, s) -> p.setProperty(AuthProperty.USERNAME.getPropertyKey(), s)), - - TENANT_ID(p -> p.getProfile().getTenantId(), - (p, s) -> p.setProperty(AuthProperty.TENANT_ID.getPropertyKey(), s)), - - AUTHORITY_HOST(p -> p.getProfile().getEnvironment().getActiveDirectoryEndpoint(), - (p, s) -> p.setProperty(AuthProperty.AUTHORITY_HOST.getPropertyKey(), s)); - - private Function getter; - private BiConsumer setter; - - AzurePasswordlessPropertiesMapping(Function getter, BiConsumer setter) { - this.getter = getter; - this.setter = setter; - } - - public Function getter() { - return getter; - } - - public BiConsumer setter() { - return setter; - } - - } } diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisClientConfig.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisClientConfig.java deleted file mode 100644 index 86683be7818a..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisClientConfig.java +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.service.implementation.redis; - -import redis.clients.jedis.HostAndPortMapper; -import redis.clients.jedis.JedisClientConfig; -import redis.clients.jedis.Protocol; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLParameters; -import javax.net.ssl.SSLSocketFactory; -import java.util.Objects; -import java.util.function.Supplier; - -/** - * JedisClientConfig implementation used for Azure Redis. - */ -public final class AzureJedisClientConfig implements JedisClientConfig { - - private final int connectionTimeoutMillis; - private final int socketTimeoutMillis; - private final int blockingSocketTimeoutMillis; - - private final String user; - private volatile String password; - private final int database; - private final String clientName; - - private final boolean ssl; - private final SSLSocketFactory sslSocketFactory; - private final SSLParameters sslParameters; - private final HostnameVerifier hostnameVerifier; - - private final HostAndPortMapper hostAndPortMapper; - - private Supplier credentialSupplier; - - private AzureJedisClientConfig(int connectionTimeoutMillis, int soTimeoutMillis, - int blockingSocketTimeoutMillis, String user, String password, int database, String clientName, - boolean ssl, SSLSocketFactory sslSocketFactory, SSLParameters sslParameters, - HostnameVerifier hostnameVerifier, HostAndPortMapper hostAndPortMapper, Supplier credentialSupplier) { - this.connectionTimeoutMillis = connectionTimeoutMillis; - this.socketTimeoutMillis = soTimeoutMillis; - this.blockingSocketTimeoutMillis = blockingSocketTimeoutMillis; - this.user = user; - this.password = password; - this.database = database; - this.clientName = clientName; - this.ssl = ssl; - this.sslSocketFactory = sslSocketFactory; - this.sslParameters = sslParameters; - this.hostnameVerifier = hostnameVerifier; - this.hostAndPortMapper = hostAndPortMapper; - this.credentialSupplier = credentialSupplier; - } - - @Override - public int getConnectionTimeoutMillis() { - return connectionTimeoutMillis; - } - - @Override - public int getSocketTimeoutMillis() { - return socketTimeoutMillis; - } - - @Override - public int getBlockingSocketTimeoutMillis() { - return blockingSocketTimeoutMillis; - } - - @Override - public String getUser() { - return user; - } - - @Override - public String getPassword() { - if (this.password != null) { - return this.password; - } - if (this.credentialSupplier != null) { - return this.credentialSupplier.get(); - } - return this.password; - } - - @Override - public synchronized void updatePassword(String password) { - if (!Objects.equals(this.password, password)) { - this.password = password; - } - } - - @Override - public int getDatabase() { - return database; - } - - @Override - public String getClientName() { - return clientName; - } - - @Override - public boolean isSsl() { - return ssl; - } - - @Override - public SSLSocketFactory getSslSocketFactory() { - return sslSocketFactory; - } - - @Override - public SSLParameters getSslParameters() { - return sslParameters; - } - - @Override - public HostnameVerifier getHostnameVerifier() { - return hostnameVerifier; - } - - @Override - public HostAndPortMapper getHostAndPortMapper() { - return hostAndPortMapper; - } - - public static Builder builder() { - return new Builder(); - } - - public static final class Builder { - - private int connectionTimeoutMillis = Protocol.DEFAULT_TIMEOUT; - private int socketTimeoutMillis = Protocol.DEFAULT_TIMEOUT; - private int blockingSocketTimeoutMillis = 0; - - private String user = null; - private String password = null; - - private Supplier credentialSupplier = null; - private int database = Protocol.DEFAULT_DATABASE; - private String clientName = null; - - private boolean ssl = false; - private SSLSocketFactory sslSocketFactory = null; - private SSLParameters sslParameters = null; - private HostnameVerifier hostnameVerifier = null; - - private HostAndPortMapper hostAndPortMapper = null; - - private Builder() { - } - - public AzureJedisClientConfig build() { - return new AzureJedisClientConfig(connectionTimeoutMillis, socketTimeoutMillis, - blockingSocketTimeoutMillis, user, password, database, clientName, ssl, sslSocketFactory, - sslParameters, hostnameVerifier, hostAndPortMapper, credentialSupplier); - } - - public Builder connectionTimeoutMillis(int connectionTimeoutMillis) { - this.connectionTimeoutMillis = connectionTimeoutMillis; - return this; - } - - public Builder socketTimeoutMillis(int socketTimeoutMillis) { - this.socketTimeoutMillis = socketTimeoutMillis; - return this; - } - - public Builder blockingSocketTimeoutMillis(int blockingSocketTimeoutMillis) { - this.blockingSocketTimeoutMillis = blockingSocketTimeoutMillis; - return this; - } - - public Builder user(String user) { - this.user = user; - return this; - } - - public Builder password(String password) { - this.password = password; - return this; - } - - public Builder credentialSupplier(Supplier credentialSupplier) { - this.credentialSupplier = credentialSupplier; - return this; - } - - public Builder database(int database) { - this.database = database; - return this; - } - - public Builder clientName(String clientName) { - this.clientName = clientName; - return this; - } - - public Builder ssl(boolean ssl) { - this.ssl = ssl; - return this; - } - - public Builder sslSocketFactory(SSLSocketFactory sslSocketFactory) { - this.sslSocketFactory = sslSocketFactory; - return this; - } - - public Builder sslParameters(SSLParameters sslParameters) { - this.sslParameters = sslParameters; - return this; - } - - public Builder hostnameVerifier(HostnameVerifier hostnameVerifier) { - this.hostnameVerifier = hostnameVerifier; - return this; - } - - public Builder hostAndPortMapper(HostAndPortMapper hostAndPortMapper) { - this.hostAndPortMapper = hostAndPortMapper; - return this; - } - } - -} diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisFactory.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisFactory.java deleted file mode 100644 index 2a2a64a68dd3..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisFactory.java +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.service.implementation.redis; - -import org.apache.commons.pool2.PooledObject; -import org.apache.commons.pool2.PooledObjectFactory; -import org.apache.commons.pool2.impl.DefaultPooledObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import redis.clients.jedis.DefaultJedisSocketFactory; -import redis.clients.jedis.HostAndPort; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisClientConfig; -import redis.clients.jedis.JedisSocketFactory; -import redis.clients.jedis.exceptions.JedisException; - -/** - * PoolableObjectFactory custom impl for Azure Redis. - */ -public class AzureJedisFactory implements PooledObjectFactory { - - private static final Logger LOGGER = LoggerFactory.getLogger(AzureJedisFactory.class); - - private final JedisSocketFactory jedisSocketFactory; - - private final JedisClientConfig clientConfig; - - protected AzureJedisFactory(HostAndPort hostAndPort, JedisClientConfig clientConfig) { - this.clientConfig = clientConfig; - this.jedisSocketFactory = new DefaultJedisSocketFactory(hostAndPort, this.clientConfig); - } - - - @Override - public void activateObject(PooledObject pooledJedis) { - final Jedis jedis = pooledJedis.getObject(); - if (jedis.getDB() != clientConfig.getDatabase()) { - jedis.select(clientConfig.getDatabase()); - } - } - - @Override - public void destroyObject(PooledObject pooledJedis) { - final Jedis jedis = pooledJedis.getObject(); - if (jedis.isConnected()) { - try { - // need a proper test, probably with mock - if (!jedis.isBroken()) { - jedis.quit(); - } - } catch (RuntimeException e) { - LOGGER.warn("Error while QUIT", e); - } - try { - jedis.close(); - } catch (RuntimeException e) { - LOGGER.warn("Error while close", e); - } - } - } - - @Override - public PooledObject makeObject() { - Jedis jedis = null; - try { - jedis = new Jedis(jedisSocketFactory, clientConfig); - jedis.connect(); - return new DefaultPooledObject<>(jedis); - } catch (JedisException jedisException) { - if (jedis != null) { - try { - jedis.quit(); - } catch (RuntimeException e) { - LOGGER.warn("Error while QUIT", e); - } - try { - jedis.close(); - } catch (RuntimeException e) { - LOGGER.warn("Error while close", e); - } - } - throw jedisException; - } - } - - @Override - public void passivateObject(PooledObject pooledObject) throws Exception { - - } - - @Override - public boolean validateObject(PooledObject pooledJedis) { - final Jedis jedis = pooledJedis.getObject(); - try { - String host = jedisSocketFactory.getHost(); - int port = jedisSocketFactory.getPort(); - - String connectionHost = jedis.getClient().getHost(); - int connectionPort = jedis.getClient().getPort(); - - return host.equals(connectionHost) - && port == connectionPort && jedis.isConnected() - && jedis.ping().equals("PONG"); - } catch (final Exception e) { - LOGGER.error("Error while validating pooled Jedis object.", e); - return false; - } - } - -} diff --git a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisPool.java b/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisPool.java deleted file mode 100644 index b7f0405f0672..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/main/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisPool.java +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.service.implementation.redis; - -import org.apache.commons.pool2.impl.GenericObjectPoolConfig; -import redis.clients.jedis.HostAndPort; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisClientConfig; -import redis.clients.jedis.JedisPool; - -public class AzureJedisPool extends JedisPool { - - public AzureJedisPool(final GenericObjectPoolConfig poolConfig, final HostAndPort hostAndPort, - final JedisClientConfig clientConfig) { - super(poolConfig, new AzureJedisFactory(hostAndPort, clientConfig)); - } -} diff --git a/sdk/spring/spring-cloud-azure-service/src/main/resources/META-INF/services/com.azure.spring.cloud.service.implementation.identity.credential.descriptor.CacheKeyDescriptor b/sdk/spring/spring-cloud-azure-service/src/main/resources/META-INF/services/com.azure.spring.cloud.service.implementation.identity.credential.descriptor.CacheKeyDescriptor deleted file mode 100644 index b20f8dd0ceaa..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/main/resources/META-INF/services/com.azure.spring.cloud.service.implementation.identity.credential.descriptor.CacheKeyDescriptor +++ /dev/null @@ -1,5 +0,0 @@ -com.azure.spring.cloud.service.implementation.identity.credential.descriptor.ClientCertificateCredentialCacheKeyDescriptor -com.azure.spring.cloud.service.implementation.identity.credential.descriptor.ClientSecretCredentialCacheKeyDescriptor -com.azure.spring.cloud.service.implementation.identity.credential.descriptor.DefaultAzureCredentialCacheKeyDescriptor -com.azure.spring.cloud.service.implementation.identity.credential.descriptor.ManagedIdentityCredentialCacheKeyDescriptor -com.azure.spring.cloud.service.implementation.identity.credential.descriptor.UsernamePasswordCredentialCacheKeyDescriptor diff --git a/sdk/spring/spring-cloud-azure-service/src/main/resources/META-INF/spring/aot.factories b/sdk/spring/spring-cloud-azure-service/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 000000000000..ec85e6f161c6 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-service/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,2 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar= \ +com.azure.spring.cloud.service.implementation.SpringCloudAzureServiceRuntimeHints diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/eventgrid/EventGridPublisherClientBuilderFactoryTests.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/eventgrid/EventGridPublisherClientBuilderFactoryTests.java index da53a6600782..9361ba8fb781 100644 --- a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/eventgrid/EventGridPublisherClientBuilderFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/eventgrid/EventGridPublisherClientBuilderFactoryTests.java @@ -17,7 +17,9 @@ import java.util.List; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; class EventGridPublisherClientBuilderFactoryTests extends AzureHttpClientBuilderFactoryBaseTests< diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/passwordless/AzureRedisPasswordlessPropertiesTest.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/passwordless/AzureRedisPasswordlessPropertiesTest.java deleted file mode 100644 index ccd9976351d0..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/passwordless/AzureRedisPasswordlessPropertiesTest.java +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.service.implementation.passwordless; - -import com.azure.identity.extensions.implementation.enums.AuthProperty; -import com.azure.spring.cloud.core.properties.authentication.TokenCredentialProperties; -import com.azure.spring.cloud.core.properties.profile.AzureProfileProperties; -import com.azure.spring.cloud.core.provider.AzureProfileOptionsProvider; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.util.Properties; - -class AzureRedisPasswordlessPropertiesTest { - - private static final String REDIS_SCOPE_GLOBAL = "https://redis.azure.com/.default"; - private static final String REDIS_SCOPE_CHINA = "https://*.cacheinfra.windows.net.china:10225/appid/.default"; - private static final String REDIS_SCOPE_US_GOVERNMENT = "https://*.cacheinfra.windows.us.government.net:10225/appid/.default"; - - @Test - void testGetScopes() { - AzureProfileProperties profile = new AzureProfileProperties(); - - AzureRedisPasswordlessProperties properties = new AzureRedisPasswordlessProperties(); - properties.setScopes("fake-scopes"); - Assertions.assertEquals("fake-scopes", properties.getScopes()); - - properties.setScopes(null); - String scopes = properties.getScopes(); - Assertions.assertEquals(REDIS_SCOPE_GLOBAL, scopes); - - profile.setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_CHINA); - properties.setProfile(profile); - scopes = properties.getScopes(); - Assertions.assertEquals(REDIS_SCOPE_CHINA, scopes); - - profile.setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_US_GOVERNMENT); - properties.setProfile(profile); - scopes = properties.getScopes(); - Assertions.assertEquals(REDIS_SCOPE_US_GOVERNMENT, scopes); - - properties.setScopes("fake-scopes"); - scopes = properties.getScopes(); - Assertions.assertEquals("fake-scopes", scopes); - - } - - @Test - void testToProperties() { - TokenCredentialProperties credential = new TokenCredentialProperties(); - credential.setClientSecret("fake-client-secret"); - credential.setClientId("fake-client-id"); - credential.setUsername("fake-username"); - credential.setPassword("fake-password"); - credential.setClientCertificatePath("fake-client-certificate-path"); - credential.setClientCertificatePassword("fake-client-certificate-password"); - - AzureProfileProperties profile = new AzureProfileProperties(); - profile.setTenantId("fake-tenantId"); - profile.setCloudType(AzureProfileOptionsProvider.CloudType.AZURE_US_GOVERNMENT); - - AzureRedisPasswordlessProperties azureRedisPasswordlessProperties = new AzureRedisPasswordlessProperties(); - azureRedisPasswordlessProperties.setScopes("fake-scopes"); - azureRedisPasswordlessProperties.setCredential(credential); - azureRedisPasswordlessProperties.setProfile(profile); - - Properties properties = azureRedisPasswordlessProperties.toPasswordlessProperties(); - - - Assertions.assertEquals("fake-client-id", properties.getProperty(AuthProperty.CLIENT_ID.getPropertyKey())); - Assertions.assertEquals("fake-client-secret", properties.getProperty(AuthProperty.CLIENT_SECRET.getPropertyKey())); - Assertions.assertEquals("fake-username", properties.getProperty(AuthProperty.USERNAME.getPropertyKey())); - Assertions.assertEquals("fake-password", properties.getProperty(AuthProperty.PASSWORD.getPropertyKey())); - Assertions.assertEquals("fake-client-certificate-path", properties.getProperty(AuthProperty.CLIENT_CERTIFICATE_PATH.getPropertyKey())); - Assertions.assertEquals("fake-client-certificate-password", properties.getProperty(AuthProperty.CLIENT_CERTIFICATE_PASSWORD.getPropertyKey())); - Assertions.assertEquals("fake-tenantId", properties.getProperty(AuthProperty.TENANT_ID.getPropertyKey())); - Assertions.assertEquals("fake-scopes", properties.getProperty(AuthProperty.SCOPES.getPropertyKey())); - } -} diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisClientConfigTest.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisClientConfigTest.java deleted file mode 100644 index 90f86b303857..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisClientConfigTest.java +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.service.implementation.redis; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import redis.clients.jedis.HostAndPortMapper; -import redis.clients.jedis.Protocol; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLParameters; -import javax.net.ssl.SSLSocketFactory; - -import static org.mockito.Mockito.mock; - -class AzureJedisClientConfigTest { - - AzureJedisClientConfig.Builder builder = AzureJedisClientConfig.builder(); - - @Test - void testCustomerParams() { - SSLSocketFactory mockSslSocketFactory = mock(SSLSocketFactory.class); - SSLParameters mockSslParameters = mock(SSLParameters.class); - HostnameVerifier mockHostnameVerifier = mock(HostnameVerifier.class); - HostAndPortMapper mockHostAndPortMapper = mock(HostAndPortMapper.class); - - builder.user("fake-user"); - builder.database(1); - builder.clientName("fake-client-name"); - builder.connectionTimeoutMillis(1500); - builder.socketTimeoutMillis(2000); - builder.blockingSocketTimeoutMillis(1400); - builder.ssl(false); - builder.sslSocketFactory(mockSslSocketFactory); - builder.sslParameters(mockSslParameters); - builder.hostnameVerifier(mockHostnameVerifier); - builder.hostAndPortMapper(mockHostAndPortMapper); - - AzureJedisClientConfig config = builder.build(); - - Assertions.assertEquals("fake-user", config.getUser()); - Assertions.assertEquals(1, config.getDatabase()); - Assertions.assertEquals("fake-client-name", config.getClientName()); - Assertions.assertEquals(1500, config.getConnectionTimeoutMillis()); - Assertions.assertEquals(2000, config.getSocketTimeoutMillis()); - Assertions.assertEquals(1400, config.getBlockingSocketTimeoutMillis()); - Assertions.assertEquals(false, config.isSsl()); - - Assertions.assertEquals(mockSslSocketFactory, config.getSslSocketFactory()); - Assertions.assertEquals(mockSslParameters, config.getSslParameters()); - Assertions.assertEquals(mockHostnameVerifier, config.getHostnameVerifier()); - Assertions.assertEquals(mockHostAndPortMapper, config.getHostAndPortMapper()); - - } - - @Test - void testDefaultParams() { - AzureJedisClientConfig config = builder.build(); - - Assertions.assertEquals(null, config.getUser()); - Assertions.assertEquals(Protocol.DEFAULT_DATABASE, config.getDatabase()); - Assertions.assertEquals(null, config.getClientName()); - Assertions.assertEquals(Protocol.DEFAULT_TIMEOUT, config.getConnectionTimeoutMillis()); - Assertions.assertEquals(Protocol.DEFAULT_TIMEOUT, config.getSocketTimeoutMillis()); - Assertions.assertEquals(0, config.getBlockingSocketTimeoutMillis()); - Assertions.assertEquals(false, config.isSsl()); - - - Assertions.assertEquals(null, config.getSslSocketFactory()); - Assertions.assertEquals(null, config.getSslParameters()); - Assertions.assertEquals(null, config.getHostnameVerifier()); - Assertions.assertEquals(null, config.getHostAndPortMapper()); - } - - - @Test - void testGetPasswordFromField() { - builder.password("fake-password"); - AzureJedisClientConfig config = builder.build(); - - Assertions.assertEquals("fake-password", config.getPassword()); - } - - @Test - void testGetPasswordFromCredentialSupplier() { - builder.credentialSupplier(() -> "password-from-credential-supplier"); - AzureJedisClientConfig config = builder.build(); - - Assertions.assertEquals("password-from-credential-supplier", config.getPassword()); - } - - @Test - void testGetPasswordFromCredentialSupplierReturnNull() { - AzureJedisClientConfig config = builder.build(); - - Assertions.assertEquals(null, config.getPassword()); - } - - @Test - void testUpdatePassword() { - builder.credentialSupplier(() -> "password-from-credential-supplier"); - AzureJedisClientConfig config = builder.build(); - - Assertions.assertEquals("password-from-credential-supplier", config.getPassword()); - - config.updatePassword("updated-password"); - Assertions.assertNotEquals("password-from-credential-supplier", config.getPassword()); - Assertions.assertEquals("updated-password", config.getPassword()); - } - -} diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisFactoryTest.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisFactoryTest.java deleted file mode 100644 index 2c766c1830ce..000000000000 --- a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/redis/AzureJedisFactoryTest.java +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.service.implementation.redis; - -import org.apache.commons.pool2.PooledObject; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.MockedConstruction; -import org.mockito.Mockito; -import redis.clients.jedis.HostAndPort; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisClientConfig; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.mockConstruction; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -class AzureJedisFactoryTest { - - @Test - @SuppressWarnings("unchecked") - void testActivateObjectJedis() { - - JedisClientConfig jedisClientConfig = mock(JedisClientConfig.class); - PooledObject pooledJedis = mock(PooledObject.class); - HostAndPort hostAndPort = mock(HostAndPort.class); - Jedis jedis = mock(Jedis.class); - - when(pooledJedis.getObject()).thenReturn(jedis); - when(jedis.getDB()).thenReturn(7); - when(jedis.select(7)).thenReturn("7 selected"); - when(jedisClientConfig.getDatabase()).thenReturn(7); - - AzureJedisFactory testTarget = new AzureJedisFactory(hostAndPort, jedisClientConfig); - testTarget.activateObject(pooledJedis); - - verify(jedis, times(1)).getDB(); - verify(jedis, times(0)).select(7); - verify(jedisClientConfig, times(1)).getDatabase(); - } - - @Test - @SuppressWarnings("unchecked") - void testDestroyObject() { - JedisClientConfig jedisClientConfig = mock(JedisClientConfig.class); - PooledObject pooledJedis = mock(PooledObject.class); - HostAndPort hostAndPort = mock(HostAndPort.class); - Jedis jedis = mock(Jedis.class); - - when(pooledJedis.getObject()).thenReturn(jedis); - when(jedis.isConnected()).thenReturn(true); - - AzureJedisFactory testTarget = new AzureJedisFactory(hostAndPort, jedisClientConfig); - testTarget.destroyObject(pooledJedis); - - verify(jedis, times(1)).isConnected(); - verify(jedis, times(1)).close(); - - } - - @Test - @SuppressWarnings("unchecked") - void testValidateObjectFalse() { - JedisClientConfig jedisClientConfig = mock(JedisClientConfig.class); - PooledObject pooledJedis = mock(PooledObject.class); - HostAndPort hostAndPort = mock(HostAndPort.class); - Jedis jedis = mock(Jedis.class); - - when(pooledJedis.getObject()).thenReturn(jedis); - when(jedis.isConnected()).thenReturn(true); - - AzureJedisFactory testTarget = new AzureJedisFactory(hostAndPort, jedisClientConfig); - boolean result = testTarget.validateObject(pooledJedis); - - Assertions.assertFalse(result); - } - - @Test - @SuppressWarnings("unchecked") - void testValidateObjectTrue() { - JedisClientConfig jedisClientConfig = mock(JedisClientConfig.class); - PooledObject pooledJedis = mock(PooledObject.class); - HostAndPort hostAndPort = mock(HostAndPort.class); - when(hostAndPort.getHost()).thenReturn("mock-host"); - when(hostAndPort.getPort()).thenReturn(1233); - - Jedis jedis = mock(Jedis.class, Mockito.RETURNS_DEEP_STUBS); - when(pooledJedis.getObject()).thenReturn(jedis); - when(jedis.getClient().getHost()).thenReturn("mock-host"); - when(jedis.getClient().getPort()).thenReturn(1233); - when(jedis.isConnected()).thenReturn(true); - when(jedis.ping()).thenReturn("PONG"); - - AzureJedisFactory testTarget = new AzureJedisFactory(hostAndPort, jedisClientConfig); - boolean result = testTarget.validateObject(pooledJedis); - Assertions.assertTrue(result); - - } - - @Test - void testMakeObject() { - JedisClientConfig jedisClientConfig = mock(JedisClientConfig.class); - HostAndPort hostAndPort = mock(HostAndPort.class); - AzureJedisFactory testTarget = new AzureJedisFactory(hostAndPort, jedisClientConfig); - - try (MockedConstruction jedisMockedConstruction = mockConstruction(Jedis.class, - (jedisMocker, context) -> { - when(jedisMocker.isConnected()).thenReturn(true); - when(jedisMocker.get("fake-key")).thenReturn("fake-value"); - - Assertions.assertNotNull(testTarget.makeObject()); - Assertions.assertEquals(jedisMocker, testTarget.makeObject().getObject()); - Assertions.assertEquals("fake-value", testTarget.makeObject().getObject().get("fake-key")); - })) { - Assertions.assertEquals(0, jedisMockedConstruction.constructed().size()); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml b/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml index dd251fd7830c..a174c52c1e43 100644 --- a/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-active-directory-b2c/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-active-directory-b2c - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Active Directory B2C Spring Cloud Azure Starter Active Directory B2C @@ -29,6 +29,8 @@ + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -87,27 +89,27 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.security spring-security-config - 5.7.11 + 6.3.0 org.springframework.security spring-security-oauth2-client - 5.7.11 + 6.3.0 org.springframework.security spring-security-oauth2-jose - 5.7.11 + 6.3.0 org.springframework.security spring-security-oauth2-resource-server - 5.7.11 + 6.3.0 @@ -148,7 +150,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml b/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml index ce9d638a42fa..77b4ff15f280 100644 --- a/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-active-directory/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-active-directory - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Active Directory Spring Cloud Azure Starter Active Directory @@ -28,6 +28,8 @@ https://github.com/Azure/azure-sdk-for-java/issues + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -86,17 +88,17 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.security spring-security-web - 5.7.11 + 6.3.0 org.springframework.security spring-security-config - 5.7.11 + 6.3.0 com.nimbusds @@ -142,7 +144,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml b/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml index 5fe9a4399312..dbf3ed2f8583 100644 --- a/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-actuator/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-actuator - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Actuator Spring Cloud Azure Starter Actuator @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,17 +88,17 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-actuator-autoconfigure - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot spring-boot-starter-actuator - 2.7.18 + 3.3.0 @@ -139,7 +139,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/CHANGELOG.md b/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/CHANGELOG.md index 8988d1355488..768dfe326773 100644 --- a/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,34 +11,70 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. @@ -49,10 +86,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav * Snapshot support using, `spring.cloud.azure.appconfiguration.stores[0].selects[0].snapshot-name`. * Support for trimming prefixes from keys, default value is the key-filter when key-filter is used. `spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix` +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -65,10 +110,22 @@ Fixes a bug where exclusions from the portal don't map correctly resulting in a Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. diff --git a/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/README.md b/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/README.md index 83cbb7fe9baf..e4f27f9b029e 100644 --- a/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/README.md +++ b/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/README.md @@ -21,7 +21,7 @@ There are two libraries that can be used spring-cloud-azure-appconfiguration-con com.azure.spring spring-cloud-azure-appconfiguration-config - 4.19.0 + 5.13.0 ``` [//]: # ({x-version-update-end}) @@ -33,7 +33,7 @@ or com.azure.spring spring-cloud-azure-appconfiguration-config-web - 4.19.0 + 5.13.0 ``` [//]: # ({x-version-update-end}) @@ -64,6 +64,7 @@ spring.cloud.azure.appconfiguration.stores[0].selects[0].key-filter | The key pa spring.cloud.azure.appconfiguration.stores[0].selects[0].label-filter | The label used to indicate which configuration(s) will be loaded. | No | `${spring.profiles.active}` or if null `\0` spring.cloud.azure.appconfiguration.stores[0].selects[0].snapshot-name | The snapshot name used to indicate which configuration(s) will be loaded. | No | null spring.cloud.azure.appconfiguration.stores[0].trim-key-prefix[0] | The prefix that will be trimmed from the key when the configuration is loaded. | No | null, unless using key-filter, then it is the key-filter +spring.cloud.azure.appconfiguration.stores[0].replicaDiscoveryEnabled | Enables periodic checking if new replicas of the store have been created. And found stores will be added to the bottom of the list of endpoints used in cases where the store can't be reached. | No | true Configuration Store Authentication @@ -402,7 +403,7 @@ This project welcomes contributions and suggestions. Most contributions require Please follow [instructions here][contributing_md] to build from source or contribute. -[package]: https://central.sonatype.com/artifact/com.microsoft.azure/spring-cloud-azure-appconfiguration-config +[package]: https://mvnrepository.com/artifact/com.microsoft.azure/spring-cloud-azure-appconfiguration-config [app_configuration_sample]: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_v4.3.0/appconfiguration/azure-spring-cloud-appconfiguration-config/azure-spring-cloud-appconfiguration-config-sample [app_configuration_conversation_complete_sample]: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_v4.3.0/appconfiguration/azure-spring-cloud-appconfiguration-config/azure-spring-cloud-appconfiguration-config-convert-sample/azure-spring-cloud-appconfiguration-config-convert-sample-complete [app_configuration_conversation_initail_sample]: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_v4.3.0/appconfiguration/azure-spring-cloud-appconfiguration-config/azure-spring-cloud-appconfiguration-config-convert-sample/azure-spring-cloud-appconfiguration-config-convert-sample-initial diff --git a/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/pom.xml b/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/pom.xml index b278c06eca54..94927ab0145c 100644 --- a/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-appconfiguration-config/pom.xml @@ -2,34 +2,150 @@ - - com.azure - azure-client-sdk-parent - 1.7.0 - ../../parents/azure-client-sdk-parent - 4.0.0 com.azure.spring spring-cloud-azure-starter-appconfiguration-config - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter App Configuration Config Spring Cloud Azure Starter App Configuration Config + https://microsoft.github.io/spring-cloud-azure + + + Spring Cloud Azure + SpringIntegSupport@microsoft.com + + + + scm:git:git@github.com:Azure/azure-sdk-for-java.git + scm:git:ssh://git@github.com:Azure/azure-sdk-for-java.git + https://github.com/Azure/azure-sdk-for-java + + + GitHub + https://github.com/Azure/azure-sdk-for-java/issues + + + + 17 + 17 + + + https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java + + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + repo + + + + + + + ossrh + Sonatype Snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + default + + true + daily + + + + + + + ossrh + Sonatype Snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + default + + true + always + + + + + + + ossrh + Sonatype Snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + true + default + + + azure-java-build-docs + ${site.url}/site/ + + com.azure.spring spring-cloud-azure-appconfiguration-config-web - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-feature-management-web - 4.20.0-beta.1 + 5.14.0-beta.1 + + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-jar-plugin + 3.4.1 + + + + com.azure.spring.cloud.starter.appconfiguration.config + + + true + true + + + + + 3.4.1 empty-javadoc-jar-with-readme diff --git a/sdk/spring/spring-cloud-azure-starter-appconfiguration/pom.xml b/sdk/spring/spring-cloud-azure-starter-appconfiguration/pom.xml index 09525d7a160c..c07e7af19885 100644 --- a/sdk/spring/spring-cloud-azure-starter-appconfiguration/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-appconfiguration/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-appconfiguration - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter App Configuration Spring Cloud Azure Starter App Configuration @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-cosmos/pom.xml b/sdk/spring/spring-cloud-azure-starter-cosmos/pom.xml index 817a88b5f2db..db21e21a06d5 100644 --- a/sdk/spring/spring-cloud-azure-starter-cosmos/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-cosmos/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-cosmos - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Cosmos DB Spring Cloud Azure Starter Cosmos DB @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-data-cosmos/pom.xml b/sdk/spring/spring-cloud-azure-starter-data-cosmos/pom.xml index c3363c75bd1e..4c66a0688b3b 100644 --- a/sdk/spring/spring-cloud-azure-starter-data-cosmos/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-data-cosmos/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-data-cosmos - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Data Cosmos DB Spring Cloud Azure Starter Data Cosmos DB @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,12 +88,12 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure azure-spring-data-cosmos - 3.47.0-beta.1 + 5.14.0-beta.1 @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -210,7 +210,7 @@ - + diff --git a/sdk/spring/spring-cloud-azure-starter-redis/pom.xml b/sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml similarity index 89% rename from sdk/spring/spring-cloud-azure-starter-redis/pom.xml rename to sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml index b7cc109b4430..a7db7035a90f 100644 --- a/sdk/spring/spring-cloud-azure-starter-redis/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-data-redis-lettuce/pom.xml @@ -5,11 +5,11 @@ 4.0.0 com.azure.spring - spring-cloud-azure-starter-redis - 4.20.0-beta.1 + spring-cloud-azure-starter-data-redis-lettuce + 5.14.0-beta.1 - Spring Cloud Azure Starter Redis - Spring Cloud Azure Starter for building applications with Azure Cache for Redis. Support authenticating with Azure AD. + Spring Cloud Azure Starter Data Redis with Lettuce + Spring Cloud Azure Starter Data Redis with Lettuce https://microsoft.github.io/spring-cloud-azure @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,19 +88,20 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.data spring-data-redis - 2.7.18 + 3.3.0 - redis.clients - jedis - 3.8.0 + io.lettuce + lettuce-core + 6.3.2.RELEASE + true @@ -148,11 +149,11 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 - com.azure.spring.cloud.starter.redis + com.azure.spring.cloud.starter.data.cosmos true @@ -228,4 +229,5 @@ + diff --git a/sdk/spring/spring-cloud-azure-starter-eventgrid/pom.xml b/sdk/spring/spring-cloud-azure-starter-eventgrid/pom.xml index 17fca02943b9..1556433a892f 100644 --- a/sdk/spring/spring-cloud-azure-starter-eventgrid/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-eventgrid/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-eventgrid - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Event Grid Spring Cloud Azure Starter Event Grid @@ -29,6 +29,8 @@ + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -87,7 +89,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -134,7 +136,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-eventhubs/pom.xml b/sdk/spring/spring-cloud-azure-starter-eventhubs/pom.xml index 4d8be33cd3b0..4c011b320901 100644 --- a/sdk/spring/spring-cloud-azure-starter-eventhubs/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-eventhubs/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Event Hubs Spring Cloud Azure Starter Event Hubs @@ -29,6 +29,8 @@ + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -87,7 +89,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -140,7 +142,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml b/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml index 11bbfe60fd3a..27d035ec08e7 100644 --- a/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-integration-eventhubs/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-integration-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Integration Event Hubs Spring Cloud Azure Starter Integration Event Hubs @@ -29,6 +29,8 @@ + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -87,17 +89,17 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot spring-boot-starter-integration - 2.7.18 + 3.3.0 com.azure.spring spring-integration-azure-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -138,7 +140,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml b/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml index 12e0e1d7ea8f..2408fdf14757 100644 --- a/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-integration-servicebus/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-integration-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Integration Service Bus Spring Cloud Azure Starter Integration Service Bus @@ -29,8 +29,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -89,17 +89,17 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot spring-boot-starter-integration - 2.7.18 + 3.3.0 com.azure.spring spring-integration-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -140,7 +140,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml b/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml index 87fd29b55a6a..b83c82a4265d 100644 --- a/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-integration-storage-queue/pom.xml @@ -10,7 +10,7 @@ com.azure.spring spring-cloud-azure-starter-integration-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Integration Storage Queue Spring Cloud Azure Starter Integration Storage Queue @@ -32,8 +32,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -92,17 +92,17 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot spring-boot-starter-integration - 2.7.18 + 3.3.0 com.azure.spring spring-integration-azure-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -143,7 +143,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml b/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml index c5ec793666e5..854b6a0e22ce 100644 --- a/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-jdbc-mysql/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-jdbc-mysql - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter JDBC MySQL Spring Cloud Azure Starter for building applications with JDBC and Azure MySQL Services. Support authenticating with Azure AD. @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -100,9 +100,8 @@ com.mysql mysql-connector-j - 8.0.33 + 8.3.0 - @@ -142,7 +141,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml b/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml index fd2d632183da..4d081b66b00c 100644 --- a/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-jdbc-postgresql - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter JDBC PostgreSQL Spring Cloud Azure Starter for building applications with JDBC and Azure PostgreSQL Services. Support authenticating with Azure AD. @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -100,7 +100,7 @@ org.postgresql postgresql - 42.3.9 + 42.7.3 @@ -141,7 +141,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-keyvault-certificates/pom.xml b/sdk/spring/spring-cloud-azure-starter-keyvault-certificates/pom.xml index edaf5bdbeea0..aee3a0775ecb 100644 --- a/sdk/spring/spring-cloud-azure-starter-keyvault-certificates/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-keyvault-certificates/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-keyvault-certificates - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Key Vault Certificates Spring Cloud Azure Starter Key Vault Certificates @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-keyvault-secrets/pom.xml b/sdk/spring/spring-cloud-azure-starter-keyvault-secrets/pom.xml index 80a0fc9bced5..d86f7b51a52e 100644 --- a/sdk/spring/spring-cloud-azure-starter-keyvault-secrets/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-keyvault-secrets/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-keyvault-secrets - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Key Vault Secrets Spring Cloud Azure Starter Key Vault Secrets @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-keyvault/pom.xml b/sdk/spring/spring-cloud-azure-starter-keyvault/pom.xml index 5d532f72ee55..1c6a885aa177 100644 --- a/sdk/spring/spring-cloud-azure-starter-keyvault/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-keyvault/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-keyvault - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Key Vault Spring Cloud Azure Starter Key Vault @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,12 +88,12 @@ com.azure.spring spring-cloud-azure-starter-keyvault-secrets - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-keyvault-certificates - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml b/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml deleted file mode 100644 index 4c49d5987da3..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/pom.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - 4.0.0 - - - org.springframework.boot - spring-boot-starter-parent - 2.7.18 - - - - com.azure.spring - spring-cloud-azure-starter-monitor-test - 1.0.0-beta.1 - - - 17 - 17 - UTF-8 - true - true - 1.32.0 - - - - - com.azure.spring - spring-cloud-azure-starter-monitor - 1.0.0-beta.6 - - - - org.springframework.boot - spring-boot-starter-web - 2.7.18 - - - org.springframework.boot - spring-boot-starter-data-jdbc - 2.7.18 - - - org.springframework.boot - spring-boot-starter-test - 2.7.18 - test - - - com.azure - azure-core-test - 1.26.0 - test - - - com.h2database - h2 - 2.2.220 - - - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - 3.3.1 - - true - - - - com.github.spotbugs - spotbugs-maven-plugin - 4.8.2.0 - - - com.diffplug.spotless - spotless-maven-plugin - 2.30.0 - - true - - - - org.revapi - revapi-maven-plugin - 0.14.6 - - true - - - - com.azure.tools - codesnippet-maven-plugin - 1.0.0-beta.10 - - ${project.basedir}/azure-resourcemanager/src/samples/java - false - ${codesnippet.skip} - - - - update-codesnippets - - update-codesnippet - - - - verify-codesnippets - - verify-codesnippet - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.12 - - true - - - - - - - - - belowJava17 - - [,17) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - true - true - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.2.5 - - true - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.6.3 - - true - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - true - - - - - - - diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/Application.java b/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/Application.java deleted file mode 100644 index d01126b9c2d9..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/Application.java +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class Application { - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/Controller.java b/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/Controller.java deleted file mode 100644 index 0795d930a376..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/Controller.java +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class Controller { - public static final String URL = "/controller-url"; - - @GetMapping(URL) - public String check() { - return "OK!"; - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/SqlExecutor.java b/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/SqlExecutor.java deleted file mode 100644 index df606b14244e..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/main/java/com/azure/SqlExecutor.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure; - -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.event.EventListener; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Component; - -@Component -public class SqlExecutor { - - private final JdbcTemplate jdbcTemplate; - - public SqlExecutor(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } - - @EventListener(ApplicationReadyEvent.class) - public void createDatabaseTable() { - jdbcTemplate.execute("create table test_table (id bigint not null, primary key (id))"); - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/test/java/com/azure/CustomValidationPolicy.java b/sdk/spring/spring-cloud-azure-starter-monitor-test/src/test/java/com/azure/CustomValidationPolicy.java deleted file mode 100644 index 8e4250fa02b5..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/test/java/com/azure/CustomValidationPolicy.java +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure; - -import com.azure.core.http.HttpPipelineCallContext; -import com.azure.core.http.HttpPipelineNextPolicy; -import com.azure.core.http.HttpResponse; -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.core.util.FluxUtil; -import com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryItem; -import com.fasterxml.jackson.databind.MappingIterator; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import reactor.core.publisher.Mono; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.CountDownLatch; -import java.util.zip.GZIPInputStream; - -class CustomValidationPolicy implements HttpPipelinePolicy { - private final ObjectMapper objectMapper = createObjectMapper(); - - private final CountDownLatch countDown; - volatile URL url; - final Queue actualTelemetryItems = new ConcurrentLinkedQueue<>(); - - CustomValidationPolicy(CountDownLatch countDown) { - this.countDown = countDown; - } - - @Override - public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { - url = context.getHttpRequest().getUrl(); - FluxUtil.collectBytesInByteBufferStream(context.getHttpRequest().getBody()).map(CustomValidationPolicy::ungzip) - .subscribe(value -> { - try (MappingIterator i = objectMapper.readerFor(TelemetryItem.class).readValues(value)) { - i.forEachRemaining(actualTelemetryItems::add); - countDown.countDown(); - } catch (Exception e) { - throw new RuntimeException(e); - } - }); - return next.process(); - } - - // decode gzipped request raw bytes back to original request body - private static String ungzip(byte[] rawBytes) { - if (rawBytes.length == 0) { - return ""; - } - try (GZIPInputStream in = new GZIPInputStream(new ByteArrayInputStream(rawBytes))) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - byte[] data = new byte[1024]; - int read; - while ((read = in.read(data, 0, data.length)) != -1) { - baos.write(data, 0, read); - } - return new String(baos.toByteArray(), StandardCharsets.UTF_8); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private static ObjectMapper createObjectMapper() { - ObjectMapper objectMapper = new ObjectMapper(); - // handle JSR-310 (java 8) dates with Jackson by configuring ObjectMapper to use this - // dependency and not (de)serialize Instant as timestamps that it does by default - objectMapper.findAndRegisterModules().disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - return objectMapper; - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/test/java/com/azure/SpringMonitorTest.java b/sdk/spring/spring-cloud-azure-starter-monitor-test/src/test/java/com/azure/SpringMonitorTest.java deleted file mode 100644 index 03f199a32e6c..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor-test/src/test/java/com/azure/SpringMonitorTest.java +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure; - -import com.azure.core.http.HttpClient; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpPipelineBuilder; -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.monitor.applicationinsights.spring.OpenTelemetryVersionCheckRunner; -import com.azure.monitor.applicationinsights.spring.selfdiagnostics.SelfDiagnosticsLevel; -import com.azure.monitor.opentelemetry.exporter.implementation.models.*; -import io.opentelemetry.sdk.common.internal.OtelVersion; -import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Primary; -import reactor.util.annotation.Nullable; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.stream.Collectors; - -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest( - classes = {Application.class, SpringMonitorTest.TestConfig.class}, - webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, - properties = { - "applicationinsights.connection.string=InstrumentationKey=00000000-0000-0000-0000-0FEEDDADBEEF;IngestionEndpoint=https://test.in.applicationinsights.azure.com/;LiveEndpoint=https://test.livediagnostics.monitor.azure.com/" - }) -class SpringMonitorTest { - - private static CountDownLatch countDownLatch; - - private static CustomValidationPolicy customValidationPolicy; - - @Autowired - private TestRestTemplate restTemplate; - - @TestConfiguration - static class TestConfig { - - @Bean - HttpPipeline httpPipeline() { - countDownLatch = new CountDownLatch(2); - customValidationPolicy = new CustomValidationPolicy(countDownLatch); - return getHttpPipeline(customValidationPolicy); - } - - HttpPipeline getHttpPipeline(@Nullable HttpPipelinePolicy policy) { - return new HttpPipelineBuilder() - .httpClient(HttpClient.createDefault()) - .policies(policy) - .build(); - } - - @Bean - @Primary - SelfDiagnosticsLevel testSelfDiagnosticsLevel() { - return SelfDiagnosticsLevel.DEBUG; - } - } - - @Test - public void shouldMonitor() throws InterruptedException, MalformedURLException { - - // Only required with GraalVM native test execution - // we aren't sure why this is needed, seems to be a Logback issue with GraalVM native - SpringMonitorTest.class.getResourceAsStream("/logback.xml"); - - String response = restTemplate.getForObject(Controller.URL, String.class); - assertThat(response).isEqualTo("OK!"); - - countDownLatch.await(10, SECONDS); - - assertThat(customValidationPolicy.url) - .isEqualTo(new URL("https://test.in.applicationinsights.azure.com/v2.1/track")); - - List telemetryItems = getTelemetryItems(); - - List logs; - List remoteDependencies; - List requests; - - // wait for at least 1 log, 1 dependency, and 1 request - long start = System.currentTimeMillis(); - boolean found; - do { - telemetryItems = getTelemetryItems(); - logs = getItemsForType(telemetryItems, "Message"); - remoteDependencies = getItemsForType(telemetryItems, "RemoteDependency"); - requests = getItemsForType(telemetryItems, "Request"); - found = !logs.isEmpty() && !remoteDependencies.isEmpty() && !requests.isEmpty(); - } - while (!found && System.currentTimeMillis() - start < SECONDS.toMillis(10)); - - // Log telemetry - TelemetryItem firstLogTelemetry = logs.get(0); - MonitorDomain logBaseData = firstLogTelemetry.getData().getBaseData(); - MessageData logData = (MessageData) logBaseData; - assertThat(logData.getMessage()).startsWith("Starting SpringMonitorTest using"); - assertThat(logData.getSeverityLevel()).isEqualTo(SeverityLevel.INFORMATION); - - // SQL telemetry - TelemetryItem remoteDependency = remoteDependencies.get(0); - MonitorDomain remoteBaseData = remoteDependency.getData().getBaseData(); - RemoteDependencyData remoteDependencyData = (RemoteDependencyData) remoteBaseData; - assertThat(remoteDependencyData.getType()).isEqualTo("SQL"); - assertThat(remoteDependencyData.getData()) - .isEqualTo("create table test_table (id bigint not null, primary key (id))"); - - // HTTP telemetry - TelemetryItem request = requests.get(0); - MonitorDomain requestBaseData = request.getData().getBaseData(); - RequestData requestData = (RequestData) requestBaseData; - assertThat(requestData.getUrl()).contains(Controller.URL); - assertThat(requestData.isSuccess()).isTrue(); - assertThat(requestData.getResponseCode()).isEqualTo("200"); - assertThat(requestData.getName()).isEqualTo("GET /controller-url"); - } - - @NotNull - private static List getTelemetryItems() { - return customValidationPolicy.actualTelemetryItems.stream() - .filter(item -> { - MonitorDomain baseData = item.getData().getBaseData(); - return !(baseData instanceof MetricsData) || isSpecialOtelResourceMetric((MetricsData) baseData); - }) - .collect(Collectors.toList()); - } - - @NotNull - private static List getItemsForType(List telemetryItems, String type) { - return telemetryItems.stream() - .filter(telemetry -> telemetry.getName().equals(type)) - .collect(Collectors.toList()); - } - - @Test - void verifyOpenTelemetryVersion() { - String currentOTelVersion = OtelVersion.VERSION; - assertThat(OpenTelemetryVersionCheckRunner.STARTER_OTEL_VERSION) - .as( - "Dear developer, You may have updated the OpenTelemetry dependencies of spring-cloud-azure-starter-monitor without updating the OTel starter version declared in " - + OpenTelemetryVersionCheckRunner.class - + ".") - .isEqualTo(currentOTelVersion); - } - - private static boolean isSpecialOtelResourceMetric(MetricsData baseData) { - return baseData.getMetrics().stream().noneMatch(metricDataPoint -> metricDataPoint.getName().equals("_OTELRESOURCE_")); - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/CHANGELOG.md b/sdk/spring/spring-cloud-azure-starter-monitor/CHANGELOG.md deleted file mode 100644 index 233939cf7c31..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/CHANGELOG.md +++ /dev/null @@ -1,48 +0,0 @@ -# Release History - -## 1.0.0-beta.7 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed - -### Other Changes - -## 1.0.0-beta.6 - -### Features Added -- [Add IDE autocompletion](https://github.com/Azure/azure-sdk-for-java/pull/40904) -- [Bump OpenTelemetry to OpenTelemetry 1.38.0](https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.38.0) -- [Bump OpenTelemetry Java instrumentation to 2.4.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.4.0) - -### Bugs Fixed -- [Fix ClientLogger issue with GraalVM native](https://github.com/Azure/azure-sdk-for-java/pull/40151) -- [Improve the connection string management](https://github.com/Azure/azure-sdk-for-java/pull/40901) - -## 1.0.0-beta.5 - -### Features Added -- Bump OpenTelemetry to OpenTelemetry 1.36.0: https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.36.0 -- Bump OpenTelemetry Java instrumentation to 2.2.0: https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.2.0 - -## 1.0.0-beta.4 - -### Features Added -- Bump OpenTelemetry to OpenTelemetry 1.35.0: https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.35.0 -- Bump OpenTelemetry Java instrumentation to 2.1.0: https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.1.0 -- Logback automatic instrumentation (OpenTelemetry Java instrumentation 2.1.O) - -## 1.0.0-beta.3 - -### Features Added -- Bump OpenTelemetry Java instrumentation to 2.0.0: https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.0.0 - -## 1.0.0-beta.2 - -### Dependency Updates -- Bump to OpenTelemetry 1.32.0 -- Disable when the Application Insights agent is enabled - -## 1.0.0-beta.1 diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/README.md b/sdk/spring/spring-cloud-azure-starter-monitor/README.md deleted file mode 100644 index 9585b245bcf5..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# Azure Monitor OpenTelemetry Distro / Application Insights in Spring Boot native image Java application - -This project is an Azure distribution of the [OpenTelemetry Spring Boot starter][otel_spring_starter]. - -It allows you to get telemetry data on Azure with a [Spring Boot native image application][spring_boot_native]. - -For a Spring Boot application running on a JVM runtime (not with a GraalVM native image), we recommend using the [Application Insights Java agent][application_insights_java_agent_spring_boot]. - -[Source code][source_code] | [Package (Maven)][package_mvn] | [API reference documentation][api_reference_doc] | [Product Documentation][product_documentation] - -## Getting started - -### Prerequisites - -- [Azure Subscription][azure_subscription] -- [Application Insights resource][application_insights_resource] - -For more information, please read [introduction to Application Insights][application_insights_intro]. - -### Build update - -#### OpenTelemetry configuration - -Import the OpenTelemetry Bills of Materials (BOM) -by [following the OpenTelemetry documentation](https://opentelemetry.io/docs/instrumentation/java/automatic/spring-boot/#dependency-management). - -#### Add monitoring dependency - -Add the [Spring Cloud Azure Starter Monitor](https://central.sonatype.com/artifact/com.azure.spring/spring-cloud-azure-starter-monitor) dependency. - -#### Required native image build configuration - -[Instruction][azure_native] for Spring Boot native image applications. - -### Enable OpenTelemetry features - -All the features described in the [OpenTelemetry Spring Boot starter][otel_spring_starter] documentation work with Azure Monitor OpenTelemetry Distro / Application Insights in Spring Boot native image Java application. - -You have just to replace the `opentelemetry-spring-boot-starter` dependency by the `spring-cloud-azure-starter-monitor` one. - -### Azure Monitor configuration - -#### Connection String - -In order to export telemetry data to Azure Monitor, you will need the connection string to your [Application - Insights resource][application_insights_resource]. Go to [Azure Portal][azure_portal], -search for your resource. On the overview page of your resource, you will find the connection string in the top -right corner. - -You can then configure the connection string in two different ways: -* With the `APPLICATIONINSIGHTS_CONNECTION_STRING` environment variable -* With the `applicationinsights.connection.string` system property. You can use `-Dapplicationinsights.connection.string` or add the property to your `application.properties` file. - -#### Cloud role name - -The [Application Map](https://learn.microsoft.com/azure/azure-monitor/app/app-map?tabs=net#set-or-override-cloud-role-name) uses the cloud role name to identify components on the map. - -You can set the cloud role name with the `spring.application.name` property. You have other options to set the cloud role role: see how to set the service name in the [OpenTelemetry documentation](https://opentelemetry.io/docs/languages/java/automatic/spring-boot/). - -### Build your Spring native application -At this step, you can build your Spring Boot native image application and start it: - -``` -mvn -Pnative spring-boot:build-image -docker run -e APPLICATIONINSIGHTS_CONNECTION_STRING="{CONNECTION_STRING}" {image-name} -``` -where you have to replace `{CONNECTION_STRING}` and `{image-name}` by your connection string and the native image name. - -### Disable the monitoring - -You can disable the monitoring by setting the `otel.sdk.disabled` property or the `OTEL_SDK_DISABLED` environment variable to true. - -### Troubleshooting - -#### Debug - -If something does not work as expected, you can enable self-diagnostics features at DEBUG level to get some insights. - -You can configure the self-diagnostics level by using the APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL environment variable. You can configure the level with ERROR, WARN, INFO, DEBUG, or TRACE. - -_The APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL environment variable only works for Logback today._ - -The following line shows you how to add self-diagnostics at the DEBUG level when running a docker container: -``` -docker run -e APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL=DEBUG {image-name} -``` - -You have to replace `{image-name}` by your docker image name. - -#### OpenTelemetry version issue - -You may notice the following message during the application start-up: -``` -WARN c.a.m.a.s.OpenTelemetryVersionCheckRunner - The OpenTelemetry version is not compatible with the spring-cloud-azure-starter-monitor dependency. The OpenTelemetry version should be -``` - -In this case, you have to import the OpenTelemetry Bills of Materials -by [following the OpenTelemetry documentation](https://opentelemetry.io/docs/instrumentation/java/automatic/spring-boot/#dependency-management). - - -## Contributing - -This project welcomes contributions and suggestions. Most contributions require you to agree to a -[Contributor License Agreement (CLA)][cla] declaring that you have the right to, and actually do, grant us the rights -to use your contribution. - -When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate -the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to -do this once across all repos using our CLA. - -This project has adopted the [Microsoft Open Source Code of Conduct][coc]. For more information see the -[Code of Conduct FAQ][coc_faq] or contact [opencode@microsoft.com][coc_contact] with any additional questions or comments. - - -[otel_spring_starter]: https://opentelemetry.io/docs/instrumentation/java/automatic/spring-boot/ -[otel_spring_starter_instrumentation]: https://opentelemetry.io/docs/instrumentation/java/automatic/spring-boot/#additional-instrumentations -[spring_boot_native]: https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html -[azure_native]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/spring/README.md#spring-aot-and-spring-native-images -[source_code]: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/spring-cloud-azure-starter-monitor/src -[package_mvn]: https://central.sonatype.com/artifact/com.azure.spring/spring-cloud-azure-starter-monitor -[api_reference_doc]: https://opentelemetry.io/docs/instrumentation/java/automatic/spring-boot/ -[product_documentation]: https://docs.microsoft.com/azure/azure-monitor/overview -[azure_subscription]: https://azure.microsoft.com/free/ -[application_insights_resource]: https://docs.microsoft.com/azure/azure-monitor/app/create-new-resource -[application_insights_intro]: https://docs.microsoft.com/azure/azure-monitor/app/app-insights-overview -[application_insights_java_agent_spring_boot]: https://learn.microsoft.com/azure/azure-monitor/app/java-spring-boot -[azure_portal]: https://portal.azure.com -[cla]: https://cla.microsoft.com -[coc]: https://opensource.microsoft.com/codeofconduct/ -[coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/ -[coc_contact]: mailto:opencode@microsoft.com -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-java%2Fsdk%monitor%2Fazure-monitor-spring-native%2FREADME.png) diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml b/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml deleted file mode 100644 index 6822adb7ba15..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/pom.xml +++ /dev/null @@ -1,232 +0,0 @@ - - - 4.0.0 - - - com.azure - azure-client-sdk-parent - 1.7.0 - ../../parents/azure-client-sdk-parent - - - - 8 - 8 - - ${jdk.version} - ${jdk.version} - ${jdk-test.version} - ${jdk-test.version} - true - - - com.azure.spring - spring-cloud-azure-starter-monitor - 1.0.0-beta.6 - - Azure Monitor OpenTelemetry Distro / Application Insights in Spring native Java application - Spring Boot starter providing telemetry data to Azure Monitor for Spring Boot applications and GraalVM native images. - - - - azure-java-build-docs - ${site.url}/site/${project.artifactId} - - - - - https://github.com/Azure/azure-sdk-for-java - - - - - - - io.opentelemetry.instrumentation - opentelemetry-spring-boot-starter - 2.4.0-alpha - - - io.opentelemetry.instrumentation - opentelemetry-jdbc - 2.4.0-alpha - provided - - - io.opentelemetry - opentelemetry-sdk-extension-autoconfigure - 1.38.0 - - - io.opentelemetry.instrumentation - opentelemetry-runtime-telemetry-java8 - 2.4.0-alpha - - - - - io.opentelemetry - opentelemetry-api - 1.38.0 - - - io.opentelemetry - opentelemetry-sdk - 1.38.0 - - - io.opentelemetry - opentelemetry-sdk-metrics - 1.38.0 - - - io.opentelemetry - opentelemetry-sdk-logs - 1.38.0 - - - io.opentelemetry - opentelemetry-sdk-extension-autoconfigure-spi - 1.38.0 - - - - - - com.azure - azure-monitor-opentelemetry-exporter - 1.0.0-beta.25 - - - - - org.junit.jupiter - junit-jupiter-api - 5.9.3 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.9.3 - test - - - org.assertj - assertj-core - 3.22.0 - test - - - org.springframework.boot - spring-boot-starter-test - 2.7.18 - test - - - - - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 3.4.1 - - - - - io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter:[2.4.0-alpha] - io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:[1.38.0] - io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:[2.4.0-alpha] - io.opentelemetry:opentelemetry-api:[1.38.0] - io.opentelemetry:opentelemetry-sdk:[1.38.0] - io.opentelemetry:opentelemetry-sdk-metrics:[1.38.0] - io.opentelemetry:opentelemetry-sdk-logs:[1.38.0] - io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:[1.38.0] - io.opentelemetry.instrumentation:opentelemetry-jdbc:[2.4.0-alpha] - - - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.6.3 - - - attach-javadocs - - jar - - - true - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - empty-javadoc-jar-with-readme - package - - jar - - - javadoc - ${project.basedir}/javadocTemp - - - - - - org.apache.maven.plugins - maven-antrun-plugin - 3.1.0 - - - copy-readme-to-javadocTemp - prepare-package - - - Deleting existing ${project.basedir}/javadocTemp - - - - Copying ${project.basedir}/README.md to - ${project.basedir}/javadocTemp/README.md - - - - - - run - - - - - - - - - diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/AzureSpringMonitorAutoConfig.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/AzureSpringMonitorAutoConfig.java deleted file mode 100644 index 7890933c957a..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/AzureSpringMonitorAutoConfig.java +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring; - -import com.azure.core.http.HttpPipeline; -import com.azure.monitor.opentelemetry.exporter.AzureMonitorExporterBuilder; -import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration; -import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; -import io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider; -import io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider; -import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider; -import io.opentelemetry.sdk.logs.export.LogRecordExporter; -import io.opentelemetry.sdk.metrics.export.MetricExporter; -import io.opentelemetry.sdk.trace.export.SpanExporter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.Optional; - -/** - * Auto config for Azure Spring Monitor - */ -@Configuration(proxyBeanMethods = false) -@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class) -@ConditionalOnProperty(name = "otel.sdk.disabled", havingValue = "false", matchIfMissing = true) -public class AzureSpringMonitorAutoConfig { - - private static final Logger LOG = LoggerFactory.getLogger(AzureSpringMonitorAutoConfig.class); - - static final String AZURE_EXPORTER_NAME = "azure-exporter"; - - private final Optional azureMonitorExporterBuilderOpt; - - /** - * Create an instance of AzureSpringMonitorConfig - * - * @param connectionStringSysProp connection string system property - * @param httpPipeline an instance of HttpPipeline - */ - public AzureSpringMonitorAutoConfig(@Value("${applicationinsights.connection.string:}") String connectionStringSysProp, ObjectProvider httpPipeline) { - this.azureMonitorExporterBuilderOpt = createAzureMonitorExporterBuilder(connectionStringSysProp, httpPipeline); - if (!isNativeRuntimeExecution()) { - LOG.warn("You are using Application Insights for Spring in a non-native GraalVM runtime environment. We recommend using the Application Insights Java agent."); - } - } - - private static boolean isNativeRuntimeExecution() { - String imageCode = System.getProperty("org.graalvm.nativeimage.imagecode"); - return imageCode != null; - } - - private Optional createAzureMonitorExporterBuilder(String connectionStringSysProp, ObjectProvider httpPipeline) { - Optional connectionString = ConnectionStringRetriever.retrieveConnectionString(connectionStringSysProp); - if (connectionString.isPresent()) { - AzureMonitorExporterBuilder azureMonitorExporterBuilder = new AzureMonitorExporterBuilder().connectionString(connectionString.get()); - HttpPipeline providedHttpPipeline = httpPipeline.getIfAvailable(); - if (providedHttpPipeline != null) { - azureMonitorExporterBuilder = azureMonitorExporterBuilder.httpPipeline(providedHttpPipeline); - } - return Optional.of(azureMonitorExporterBuilder); - } else { - LOG.warn("Unable to find the Application Insights connection string. The telemetry data won't be sent to Azure."); - } - return Optional.empty(); - } - - /** - * Declare a ConfigurableMetricExporterProvider bean - * - * @return ConfigurableMetricExporterProvider - */ - @Bean - ConfigurableMetricExporterProvider otlpMetricExporterProvider() { - MetricExporter metricExporter = createMetricExporter(); - return new ConfigurableMetricExporterProvider() { - @Override - public MetricExporter createExporter(ConfigProperties configProperties) { - return metricExporter; - } - @Override - public String getName() { - return AZURE_EXPORTER_NAME; - } - }; - - } - - private MetricExporter createMetricExporter() { - if (!azureMonitorExporterBuilderOpt.isPresent()) { - return null; - } - return azureMonitorExporterBuilderOpt.get().buildMetricExporter(); - } - - /** - * Declare a ConfigurableSpanExporterProvider bean - * - * @return ConfigurableSpanExporterProvider - */ - @Bean - ConfigurableSpanExporterProvider otlpSpanExporterProvider() { - SpanExporter spanExporter = createSpanExporter(); - return new ConfigurableSpanExporterProvider() { - @Override - public SpanExporter createExporter(ConfigProperties configProperties) { - return spanExporter; - } - @Override - public String getName() { - return AZURE_EXPORTER_NAME; - } - }; - } - - private SpanExporter createSpanExporter() { - if (!azureMonitorExporterBuilderOpt.isPresent()) { - return null; - } - return azureMonitorExporterBuilderOpt.get().buildTraceExporter(); - } - - - /** - * Declare a ConfigurableLogRecordExporterProvider bean - * - * @return ConfigurableLogRecordExporterProvider - */ - @Bean - ConfigurableLogRecordExporterProvider otlpLogRecordExporterProvider() { - LogRecordExporter logRecordExporter = createLogRecordExporter(); - return new ConfigurableLogRecordExporterProvider() { - @Override - public LogRecordExporter createExporter(ConfigProperties configProperties) { - return logRecordExporter; - } - @Override - public String getName() { - return AZURE_EXPORTER_NAME; - } - }; - } - - private LogRecordExporter createLogRecordExporter() { - if (!azureMonitorExporterBuilderOpt.isPresent()) { - return null; - } - return azureMonitorExporterBuilderOpt.get().buildLogRecordExporter(); - } - - - /** - * Declare OpenTelemetryVersionCheckRunner bean to check the OpenTelemetry version - * - * @return OpenTelemetryVersionCheckRunner - */ - @Bean - public OpenTelemetryVersionCheckRunner openTelemetryVersionCheckRunner() { - return new OpenTelemetryVersionCheckRunner(); - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/ConnectionStringRetriever.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/ConnectionStringRetriever.java deleted file mode 100644 index 0a76363e1537..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/ConnectionStringRetriever.java +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring; - -import com.azure.monitor.opentelemetry.exporter.implementation.utils.Strings; - -import java.util.Optional; - -final class ConnectionStringRetriever { - private static final String APPLICATIONINSIGHTS_CONNECTION_STRING_ENV = - "APPLICATIONINSIGHTS_CONNECTION_STRING"; - - private ConnectionStringRetriever() { - } - - static Optional retrieveConnectionString(String connectionStringSysProp) { - - if (connectionStringSysProp != null) { - if (connectionStringSysProp.isEmpty()) { - return Optional.empty(); - } - return Optional.of(connectionStringSysProp); - } - - String connectionStringFromEnvVar = getEnvVar(APPLICATIONINSIGHTS_CONNECTION_STRING_ENV); - if (connectionStringFromEnvVar != null) { - return Optional.of(connectionStringFromEnvVar); - } - - return Optional.empty(); - } - - private static String getEnvVar(String name) { - return Strings.trimAndEmptyToNull(System.getenv(name)); - } - -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/OTelVersion.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/OTelVersion.java deleted file mode 100644 index f6c6858e2485..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/OTelVersion.java +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.monitor.applicationinsights.spring; - -import java.util.Comparator; - -class OTelVersion { - - private static final Comparator VERSION_COMPARATOR = Comparator.comparingInt(OTelVersion::getMajorVersion) - .thenComparing(OTelVersion::getMinorVersion) - .thenComparing(OTelVersion::getPatchVersion); - final int majorVersion; - private final int minorVersion; - private final int patchVersion; - - - private int getMajorVersion() { - return majorVersion; - } - - private int getMinorVersion() { - return minorVersion; - } - - private int getPatchVersion() { - return patchVersion; - } - - OTelVersion(String otelVersionAsString) { - String[] versionComponents = otelVersionAsString.split("\\."); - this.majorVersion = Integer.parseInt(versionComponents[0]); - this.minorVersion = Integer.parseInt(versionComponents[1]); - this.patchVersion = Integer.parseInt(versionComponents[2]); - } - - boolean isLessThan(OTelVersion oTelVersion) { - return VERSION_COMPARATOR.compare(this, oTelVersion) < 0; - } - - boolean isGreaterThan(OTelVersion oTelVersion) { - return VERSION_COMPARATOR.compare(this, oTelVersion) > 0; - } - - boolean hasSameMajorVersionAs(OTelVersion oTelVersion) { - return this.majorVersion == oTelVersion.majorVersion; - } - -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/OpenTelemetryVersionCheckRunner.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/OpenTelemetryVersionCheckRunner.java deleted file mode 100644 index 731db441ff5f..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/OpenTelemetryVersionCheckRunner.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.monitor.applicationinsights.spring; - -import io.opentelemetry.sdk.common.internal.OtelVersion; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.CommandLineRunner; - -/** - * This component alerts the user to the fact that the OpenTelemetry version used is not compatible - * with the starter. One use case is Spring Boot 3 using OpenTelemetry. - */ -public class OpenTelemetryVersionCheckRunner implements CommandLineRunner { - private static final Logger LOG = LoggerFactory.getLogger(OpenTelemetryVersionCheckRunner.class); - - // If this version is not up-to-date, a test will fail. - //TODO: could be generated at build time - /** - * OpenTelemetry version of the starter - */ - public static final String STARTER_OTEL_VERSION = "1.38.0"; - - /** - * To verify the OpenTelemetry version at the application start-up. - * - * @param args args - */ - @Override - public void run(String... args) { - try { - OTelVersion currentOtelVersion = new OTelVersion(OtelVersion.VERSION); - OTelVersion starterOTelVersion = new OTelVersion(STARTER_OTEL_VERSION); - checkOpenTelemetryVersion(currentOtelVersion, starterOTelVersion); - } catch (Exception e) { - LOG.warn( - "An unexpected issue has happened during the verification of the OpenTelemetry version.", - e); - } - } - - private static void checkOpenTelemetryVersion( - OTelVersion currentOTelVersion, OTelVersion starterOTelVersion) { - if (!currentOTelVersion.hasSameMajorVersionAs(starterOTelVersion)) { - LOG.warn( - "Spring Boot and the spring-cloud-azure-starter-monitor dependency have different OpenTelemetry major versions (respectively " - + currentOTelVersion.majorVersion - + " and " - + starterOTelVersion.majorVersion - + ") . This will likely cause unexpected behaviors."); - } else if (currentOTelVersion.isLessThan(starterOTelVersion)) { - LOG.warn( - "The OpenTelemetry version is not compatible with the spring-cloud-azure-starter-monitor dependency. The OpenTelemetry version should be " - + STARTER_OTEL_VERSION - + " or later. " - + "Please look at the spring-cloud-azure-starter-monitor documentation to fix this."); - } else if (currentOTelVersion.isGreaterThan(starterOTelVersion)) { - LOG.debug("A new version of spring-cloud-azure-starter-monitor dependency may be available."); - } - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/PropertiesPostProcessor.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/PropertiesPostProcessor.java deleted file mode 100644 index 217b508b8f2b..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/PropertiesPostProcessor.java +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.env.EnvironmentPostProcessor; -import org.springframework.core.Ordered; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.MutablePropertySources; -import org.springframework.core.env.PropertySource; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -class PropertiesPostProcessor implements EnvironmentPostProcessor, Ordered { - @Override - public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { - - if (starterHasToBeDisabled(environment)) { - // To log once the logging system is initialized in the Spring Boot application - application.addInitializers(applicationContext -> { - Logger log = LoggerFactory.getLogger(PropertiesPostProcessor.class); - log.warn("The spring-cloud-azure-starter-monitor Spring starter is disabled because the Application Insights Java agent is enabled." - + " You can remove this message by adding the otel.sdk.disabled=true property."); - }); - } - - Map newProperties = buildNewProperties(environment); - PropertySource propertySource = new MapPropertySource("newPropertiesForSpringMonitor", newProperties); - - MutablePropertySources propertySources = environment.getPropertySources(); - propertySources.addLast(propertySource); - } - - private static Map buildNewProperties(ConfigurableEnvironment environment) { - if (starterHasToBeDisabled(environment)) { - return Collections.singletonMap("otel.sdk.disabled", true); // Disable the Spring Monitor starter and the OTel starter; - } - - String applicationInsightConnectionString = environment.getProperty("applicationinsights.connection.string", String.class); - - if (applicationInsightConnectionString == null || applicationInsightConnectionString.isEmpty()) { - Map propertiesToOverride = new HashMap<>(3); - propertiesToOverride.put("otel.traces.exporter", "none"); - propertiesToOverride.put("otel.metrics.exporter", "none"); - propertiesToOverride.put("otel.logs.exporter", "none"); - return propertiesToOverride; - } - - if (!applicationInsightConnectionString.startsWith("InstrumentationKey=")) { - throw new WrongConnectionStringException(); - } - - Map propertiesToOverride = new HashMap<>(3); - propertiesToOverride.put("otel.traces.exporter", AzureSpringMonitorAutoConfig.AZURE_EXPORTER_NAME); - propertiesToOverride.put("otel.metrics.exporter", AzureSpringMonitorAutoConfig.AZURE_EXPORTER_NAME); - propertiesToOverride.put("otel.logs.exporter", AzureSpringMonitorAutoConfig.AZURE_EXPORTER_NAME); - return propertiesToOverride; - } - - private static boolean starterHasToBeDisabled(ConfigurableEnvironment environment) { - return !isNativeRuntimeExecution() - && !isStarterDisabled(environment) && applicationInsightsAgentIsAttached(); - } - - private static boolean isNativeRuntimeExecution() { - String imageCode = System.getProperty("org.graalvm.nativeimage.imagecode"); - return imageCode != null; - } - - private static boolean isStarterDisabled(ConfigurableEnvironment environment) { - String otelSdkDisabled = environment.getProperty("otel.sdk.disabled", "false"); - return Boolean.parseBoolean(otelSdkDisabled); - } - - private static boolean applicationInsightsAgentIsAttached() { - try { - Class.forName("com.microsoft.applicationinsights.agent.Agent", false, null); - return true; - } catch (ClassNotFoundException e) { - return false; - } - } - - @Override - public int getOrder() { - return Ordered.LOWEST_PRECEDENCE - 1; - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/package-info.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/package-info.java deleted file mode 100644 index 83d2a8100a9d..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Package containing the classes for Application Insights for Spring native. - */ -package com.azure.monitor.applicationinsights.spring; diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/DefaultLogConfig.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/DefaultLogConfig.java deleted file mode 100644 index 3ba74d957748..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/DefaultLogConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Default self-diagnostics features for logging when Logback is not found. - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnMissingClass({"ch.qos.logback.classic.LoggerContext"}) -public class DefaultLogConfig { - - /** - * To define a logger for self-diagnostics. - * - * @return A logger for self-diagnostics - */ - @Bean - public Logger selfDiagnosticsLogger() { - Logger logger = LoggerFactory.getLogger(SelfDiagnostics.class); - String selfDiagLevelDefinedByUser = System.getenv(SelfDiagAutoConfig.SELF_DIAGNOSTICS_LEVEL_ENV_VAR); - if (selfDiagLevelDefinedByUser != null) { - String loggerLevel = findLevel(logger); - logger.warn("You have defined a self-diagnostics level at " + selfDiagLevelDefinedByUser + ". The self-diagnostics level was not set to this value because Logback is not used. The self-diagnostics level is " + loggerLevel + "."); - } - return logger; - } - - private static String findLevel(Logger logger) { - if (logger.isErrorEnabled()) { - return "ERROR"; - } - if (logger.isWarnEnabled()) { - return "WARN"; - } - if (logger.isInfoEnabled()) { - return "INFO"; - } - if (logger.isDebugEnabled()) { - return "DEBUG"; - } - if (logger.isTraceEnabled()) { - return "TRACE"; - } - return "UNKNOWN"; - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/ExecutionEnvSelfDiag.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/ExecutionEnvSelfDiag.java deleted file mode 100644 index ab0b02be4372..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/ExecutionEnvSelfDiag.java +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -import org.slf4j.Logger; -import org.springframework.boot.CommandLineRunner; - -class ExecutionEnvSelfDiag implements CommandLineRunner { - private final Logger selfDiagnosticsLogger; - - ExecutionEnvSelfDiag(Logger selfDiagnosticsLogger) { - this.selfDiagnosticsLogger = selfDiagnosticsLogger; - } - - @Override - public void run(String... args) { - try { - executeExecutionEnvSelfDiagnostics(); - } catch (Exception e) { - selfDiagnosticsLogger.warn("An unexpected issue has happened during execution env self-diagnostics.", e); - } - } - - private void executeExecutionEnvSelfDiagnostics() { - if (selfDiagnosticsLogger.isDebugEnabled()) { - boolean nativeRuntimeExecution = isNativeRuntimeExecution(); - selfDiagnosticsLogger.debug("GraalVM native: " + nativeRuntimeExecution); - } - if (selfDiagnosticsLogger.isTraceEnabled()) { - selfDiagnosticsLogger.trace("OS: " + System.getProperty("os.name")); - selfDiagnosticsLogger.trace("Env: " + System.getenv()); - selfDiagnosticsLogger.trace("System properties: " + System.getProperties()); - } - } - - private static boolean isNativeRuntimeExecution() { - String imageCode = System.getProperty("org.graalvm.nativeimage.imagecode"); - return imageCode != null; - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/LogbackSelfDiagConfig.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/LogbackSelfDiagConfig.java deleted file mode 100644 index f324c8a0fdae..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/LogbackSelfDiagConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -import ch.qos.logback.classic.Level; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Logback self-diagnostics features. - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass(ch.qos.logback.classic.LoggerContext.class) -public class LogbackSelfDiagConfig { - - - /** - * To define a logger for self-diagnostics. - * - * @param selfDiagnosticsLevel The self-diagnostics level - * @return A logger for self-diagnostics - */ - @Bean - public Logger selfDiagnosticsLogger(SelfDiagnosticsLevel selfDiagnosticsLevel) { - Logger slf4jLog = LoggerFactory.getLogger(SelfDiagnostics.class); - ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) slf4jLog; - Level logbackLevel = findLogbackLevelFrom(selfDiagnosticsLevel, slf4jLog); - logbackLogger.setLevel(logbackLevel); - return logbackLogger; - } - - private static Level findLogbackLevelFrom(SelfDiagnosticsLevel selfDiagnosticsLevel, Logger slf4jLog) { - try { - return Level.valueOf(selfDiagnosticsLevel.name()); - } catch (IllegalArgumentException e) { - slf4jLog.warn("Unable to find Logback " + selfDiagnosticsLevel.name() + " level.", e); - return Level.INFO; - } - } - -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/OtelSelfDiag.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/OtelSelfDiag.java deleted file mode 100644 index 47e8702682d7..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/OtelSelfDiag.java +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -import io.opentelemetry.api.OpenTelemetry; -import io.opentelemetry.instrumentation.spring.autoconfigure.OpenTelemetryAutoConfiguration; -import org.slf4j.Logger; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.boot.CommandLineRunner; -import org.springframework.context.ApplicationContext; - -class OtelSelfDiag implements CommandLineRunner { - - private final ApplicationContext applicationContext; - private final Logger selfDiagnosticsLogger; - - OtelSelfDiag(ApplicationContext applicationContext, Logger selfDiagnosticsLogger) { - this.applicationContext = applicationContext; - this.selfDiagnosticsLogger = selfDiagnosticsLogger; - } - - @Override - public void run(String... args) { - try { - executeOtelSelfDiagnostics(); - } catch (Exception e) { - selfDiagnosticsLogger.warn("An unexpected issue has happened during OpenTelemetry self-diagnostics.", e); - } - } - - private void executeOtelSelfDiagnostics() { - if (!selfDiagnosticsLogger.isDebugEnabled()) { - return; - } - if (applicationContext instanceof BeanDefinitionRegistry) { - BeanDefinitionRegistry beanDefinitionRegistry = (BeanDefinitionRegistry) applicationContext; - checkBeanComesFromOtelJavaInstrumentationConfig(beanDefinitionRegistry, OpenTelemetry.class); - } - if (isOpenTelemetryNoop()) { - selfDiagnosticsLogger.debug("NOOP OpenTelemetry"); - } - } - - private void checkBeanComesFromOtelJavaInstrumentationConfig(BeanDefinitionRegistry beanDefinitionRegistry, Class clazz) { - String[] beanNames = applicationContext.getBeanNamesForType(clazz); - String beanName = beanNames[0]; - BeanDefinition beanDefinition = beanDefinitionRegistry.getBeanDefinition(beanName); - String factoryBeanName = beanDefinition.getFactoryBeanName(); - if (factoryBeanName != null) { - boolean isOtelFactoryBean = factoryBeanName.startsWith(OpenTelemetryAutoConfiguration.class.getName()); - if (!isOtelFactoryBean) { - selfDiagnosticsLogger.debug("We do not recommend to define a bean of type " + clazz + ". "); - } - } - } - - private boolean isOpenTelemetryNoop() { - OpenTelemetry openTelemetry = applicationContext.getBean(OpenTelemetry.class); - return openTelemetry.equals(OpenTelemetry.noop()); - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagAutoConfig.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagAutoConfig.java deleted file mode 100644 index ce8321b00bb0..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagAutoConfig.java +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -import java.util.Locale; - -/** - * Main configuration entry point of the self-diagnostics - **/ -@Configuration(proxyBeanMethods = false) -@ConditionalOnProperty(name = "otel.sdk.disabled", havingValue = "false", matchIfMissing = true) -@Import({DefaultLogConfig.class, LogbackSelfDiagConfig.class}) -public class SelfDiagAutoConfig { - private static final Logger LOG = LoggerFactory.getLogger(SelfDiagAutoConfig.class); - static final String SELF_DIAGNOSTICS_LEVEL_ENV_VAR = "APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL"; - - @Bean - SelfDiagnosticsLevel selfDiagnosticsLevel() { - String selfDiagLevelEnvVar = System.getenv(SELF_DIAGNOSTICS_LEVEL_ENV_VAR); - if (selfDiagLevelEnvVar == null) { - return SelfDiagnosticsLevel.INFO; - } - try { - String upperCaseLevel = selfDiagLevelEnvVar.toUpperCase(Locale.ROOT); - return SelfDiagnosticsLevel.valueOf(upperCaseLevel); - } catch (IllegalArgumentException e) { - LOG.warn("Unable to find the self-diagnostics level related to " + selfDiagLevelEnvVar + "defined with " + SELF_DIAGNOSTICS_LEVEL_ENV_VAR + " environment variable.", e); - return SelfDiagnosticsLevel.INFO; - } - } - - @Bean - OtelSelfDiag otelSelfDiag(ApplicationContext applicationContext, Logger selfDiagnosticsLogger) { - return new OtelSelfDiag(applicationContext, selfDiagnosticsLogger); - } - - @Bean - ExecutionEnvSelfDiag executionEnvSelfDiag(Logger selfDiagnosticsLogger) { - return new ExecutionEnvSelfDiag(selfDiagnosticsLogger); - } - -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagnostics.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagnostics.java deleted file mode 100644 index 3b6b9acc43a5..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagnostics.java +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -// Class used for logging -final class SelfDiagnostics { - - private SelfDiagnostics() { - } -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagnosticsLevel.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagnosticsLevel.java deleted file mode 100644 index c2dfd326b5e2..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/java/com/azure/monitor/applicationinsights/spring/selfdiagnostics/SelfDiagnosticsLevel.java +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.monitor.applicationinsights.spring.selfdiagnostics; - -/** - * This enum allows you to define a self-diagnostics level. - */ -public enum SelfDiagnosticsLevel { - - /** - * Error self-diagnostics level - */ - ERROR, - /** - * Warn self-diagnostics level - */ - WARN, - /** - * Info self-diagnostics level - */ - INFO, - - /** - * Debug self-diagnostics level - */ - DEBUG, - - /** - * Trace self-diagnostics level - */ - TRACE -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/native-image/native-image.properties b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/native-image/native-image.properties deleted file mode 100644 index 97570d62cb2c..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/native-image/native-image.properties +++ /dev/null @@ -1,7 +0,0 @@ -Args=\ - --initialize-at-build-time=ch.qos.logback.core \ - --initialize-at-build-time=ch.qos.logback.classic \ - --initialize-at-build-time=io.opentelemetry.instrumentation.logback.appender.v1_0.internal.LoggingEventMapper \ - --initialize-at-build-time=io.opentelemetry.instrumentation.api.internal.cache.concurrentlinkedhashmap.ConcurrentLinkedHashMap \ - --initialize-at-build-time=io.opentelemetry.api.DefaultOpenTelemetry \ - --initialize-at-build-time=io.opentelemetry.context.propagation.DefaultContextPropagators diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/native-image/reflect-config.json b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/native-image/reflect-config.json deleted file mode 100644 index de50e08340c8..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/native-image/reflect-config.json +++ /dev/null @@ -1,149 +0,0 @@ -[ - { - "name": "io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender", - "allDeclaredMethods": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.AzureMonitorLogRecordExporter", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.AzureMonitorMetricExporter", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.AzureMonitorTraceExporter", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.AvailabilityData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.ContextTagKeys", - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.DataPointType", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.ExportResult", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.ExportResultException", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.MessageData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.MetricDataPoint", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.MetricsData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.MonitorBase", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.MonitorDomain", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.PageViewData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.PageViewPerfData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.RemoteDependencyData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.RequestData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.SeverityLevel", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.StackFrame", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryErrorDetails", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryEventData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryExceptionData", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryExceptionDetails", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - }, - { - "name": "com.azure.monitor.opentelemetry.exporter.implementation.models.TelemetryItem", - "allDeclaredMethods": true, - "allDeclaredFields": true, - "allDeclaredConstructors": true - } -] diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/spring.factories b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 38aeb28c2b33..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.env.EnvironmentPostProcessor=\ - com.azure.monitor.applicationinsights.spring.PropertiesPostProcessor diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index 0b989951e7bc..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,2 +0,0 @@ -com.azure.monitor.applicationinsights.spring.AzureSpringMonitorAutoConfig -com.azure.monitor.applicationinsights.spring.selfdiagnostics.SelfDiagAutoConfig diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/test/java/com/azure/monitor/applicationinsights/spring/OTelVersionTest.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/test/java/com/azure/monitor/applicationinsights/spring/OTelVersionTest.java deleted file mode 100644 index 2f0b5020090e..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/test/java/com/azure/monitor/applicationinsights/spring/OTelVersionTest.java +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.monitor.applicationinsights.spring; - -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -class OTelVersionTest { - - @Test - void lessThanWithSameVersions() { - assertThat(new OTelVersion("1.28.0").isLessThan(new OTelVersion("1.28.0"))).isFalse(); - } - - @Test - void lessThanWithSameMajorVersions() { - assertThat(new OTelVersion("1.27.0").isLessThan(new OTelVersion("1.28.0"))).isTrue(); - } - - @Test - void lessThanWithSameMajorAndMinorVersions() { - assertThat(new OTelVersion("1.28.0").isLessThan(new OTelVersion("1.28.1"))).isTrue(); - } - - @Test - void lessThanWithDifferentMajorVersions() { - assertThat(new OTelVersion("1.27.0").isLessThan(new OTelVersion("2.28.0"))).isTrue(); - } - - @Test - void greaterThanWithSameVersions() { - assertThat(new OTelVersion("1.28.0").isGreaterThan(new OTelVersion("1.28.0"))).isFalse(); - } - - @Test - void greaterThanWithSameMajorVersions() { - assertThat(new OTelVersion("1.28.0").isGreaterThan(new OTelVersion("1.27.0"))).isTrue(); - } - - @Test - void greaterThanWithSameMajorAndMinorVersions() { - assertThat(new OTelVersion("1.28.1").isGreaterThan(new OTelVersion("1.28.0"))).isTrue(); - } - - @Test - void greaterThanWithDifferentMajorVersions() { - assertThat(new OTelVersion("2.28.0").isGreaterThan(new OTelVersion("1.28.0"))).isTrue(); - } - - -} diff --git a/sdk/spring/spring-cloud-azure-starter-monitor/src/test/java/com/azure/monitor/applicationinsights/spring/SpringContextTest.java b/sdk/spring/spring-cloud-azure-starter-monitor/src/test/java/com/azure/monitor/applicationinsights/spring/SpringContextTest.java deleted file mode 100644 index d336837edf4b..000000000000 --- a/sdk/spring/spring-cloud-azure-starter-monitor/src/test/java/com/azure/monitor/applicationinsights/spring/SpringContextTest.java +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -package com.azure.monitor.applicationinsights.spring; - -import com.azure.monitor.applicationinsights.spring.selfdiagnostics.SelfDiagAutoConfig; -import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; - -class SpringContextTest { - - private final ApplicationContextRunner contextRunner = new ApplicationContextRunner(); - - // The tests of the Spring Monitor features are done in the spring-cloud-azure-starter-monitor-test Maven module - @Test - void loadContext() { - this.contextRunner.withConfiguration(AutoConfigurations.of(AzureSpringMonitorAutoConfig.class, SelfDiagAutoConfig.class)).run(context -> { - }); - } - -} diff --git a/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml b/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml index 8492f849105c..6d24c4083a50 100644 --- a/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-servicebus-jms - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Service Bus JMS Spring Cloud Azure Starter Service Bus JMS @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,48 +88,24 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework spring-jms - 5.3.32 + 6.1.8 - org.messaginghub - pooled-jms - 1.2.6 - - - com.microsoft.azure - azure-servicebus-jms - 1.0.0 - - - com.azure - azure-core - - - com.azure - azure-identity - - - - - - com.azure - azure-core - 1.49.1 - true + org.apache.qpid + qpid-jms-client + 2.0.0 - com.azure - azure-identity - 1.13.0 - true + org.messaginghub + pooled-jms + 3.1.6 @@ -211,7 +187,7 @@ currently released version and a lower version is resolved. --> org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-servicebus/pom.xml b/sdk/spring/spring-cloud-azure-starter-servicebus/pom.xml index 02f34c62f2e1..1c3011227541 100644 --- a/sdk/spring/spring-cloud-azure-starter-servicebus/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-servicebus/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Service Bus Spring Cloud Azure Starter Service Bus @@ -29,8 +29,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -89,7 +89,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -135,7 +135,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-storage-blob/pom.xml b/sdk/spring/spring-cloud-azure-starter-storage-blob/pom.xml index a142b00da8e6..acf99a4f43cb 100644 --- a/sdk/spring/spring-cloud-azure-starter-storage-blob/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-storage-blob/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-storage-blob - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Storage Blob Spring Cloud Azure Starter Storage Blob @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -135,7 +135,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-storage-file-share/pom.xml b/sdk/spring/spring-cloud-azure-starter-storage-file-share/pom.xml index a0da50101524..91350f2f877e 100644 --- a/sdk/spring/spring-cloud-azure-starter-storage-file-share/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-storage-file-share/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-storage-file-share - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Storage File Share Spring Cloud Azure Starter Storage File Share @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,7 +88,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -135,7 +135,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-storage-queue/pom.xml b/sdk/spring/spring-cloud-azure-starter-storage-queue/pom.xml index 4a25186bc62c..71a674b3909d 100644 --- a/sdk/spring/spring-cloud-azure-starter-storage-queue/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-storage-queue/pom.xml @@ -10,7 +10,7 @@ com.azure.spring spring-cloud-azure-starter-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Storage Queue Spring Cloud Azure Starter Storage Queue @@ -32,8 +32,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -92,7 +92,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -138,7 +138,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-storage/pom.xml b/sdk/spring/spring-cloud-azure-starter-storage/pom.xml index 6b8a0e4b7ba1..def1c4771964 100644 --- a/sdk/spring/spring-cloud-azure-starter-storage/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-storage/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter-storage - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Storage Spring Cloud Azure Starter Storage @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,19 +88,19 @@ com.azure.spring spring-cloud-azure-starter-storage-blob - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-storage-file-share - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-starter-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -141,7 +141,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-stream-eventhubs/pom.xml b/sdk/spring/spring-cloud-azure-starter-stream-eventhubs/pom.xml index 8067cc7cebf7..ed3a80cea7ec 100644 --- a/sdk/spring/spring-cloud-azure-starter-stream-eventhubs/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-stream-eventhubs/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-stream-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Stream Event Hubs Spring Cloud Azure Starter Stream Event Hubs @@ -29,6 +29,8 @@ + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -87,7 +89,7 @@ com.azure.spring spring-cloud-azure-stream-binder-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -128,7 +130,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter-stream-servicebus/pom.xml b/sdk/spring/spring-cloud-azure-starter-stream-servicebus/pom.xml index e3071aebe140..80cf043b9f2d 100644 --- a/sdk/spring/spring-cloud-azure-starter-stream-servicebus/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter-stream-servicebus/pom.xml @@ -7,7 +7,7 @@ com.azure.spring spring-cloud-azure-starter-stream-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Stream Service Bus Spring Cloud Azure Starter Stream Service Bus @@ -29,6 +29,8 @@ + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -87,7 +89,7 @@ com.azure.spring spring-cloud-azure-stream-binder-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -128,7 +130,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-starter/pom.xml b/sdk/spring/spring-cloud-azure-starter/pom.xml index a89804da42ca..aeec5e83f91a 100644 --- a/sdk/spring/spring-cloud-azure-starter/pom.xml +++ b/sdk/spring/spring-cloud-azure-starter/pom.xml @@ -6,7 +6,7 @@ com.azure.spring spring-cloud-azure-starter - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Starter Core starter, including auto-configuration support @@ -28,8 +28,8 @@ - 1.8 - 1.8 + 17 + 17 https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -88,12 +88,12 @@ org.springframework.boot spring-boot-starter - 2.7.18 + 3.3.0 com.azure.spring spring-cloud-azure-autoconfigure - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -134,7 +134,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md index 87056a4f02ff..5fbd882f0d80 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,26 +99,54 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml index b39de6b94c2e..5273072aac94 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-stream-binder-eventhubs-core - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Stream Binder Event Hubs Core Spring Cloud Azure Stream Binder Event Hubs Core @@ -32,7 +32,10 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + org.springframework.cloud @@ -43,26 +46,26 @@ spring-integration-core - 3.2.10 + 4.1.1 com.azure.spring spring-integration-azure-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot spring-boot-configuration-processor - 2.7.18 + 3.3.0 true org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -70,25 +73,25 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework spring-test - 5.3.32 + 6.1.8 test @@ -104,18 +107,93 @@ org.springframework.boot spring-boot-test - 2.7.18 + 3.3.0 test org.assertj assertj-core - 3.22.0 + 3.25.3 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + annotation-process + + compile + + + + -proc:only + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -124,8 +202,8 @@ - org.springframework.boot:spring-boot-configuration-processor:[2.7.18] - org.springframework.cloud:spring-cloud-stream:[3.2.10] + org.springframework.boot:spring-boot-configuration-processor:[3.3.0] + org.springframework.cloud:spring-cloud-stream:[4.1.1] @@ -134,7 +212,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -145,65 +223,4 @@ - - - - annotation-process-for-java-8 - - [1.8,9) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - annotation-process-for-java-8 - - compile - - - - -proc:only - - - - - - - - - - annotation-process-for-java-11 - - [11,) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - annotation-process-for-java-11 - - compile - - - - -proc:only - - 11 - - - - - - - - - diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsChannelProvisioner.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsChannelProvisioner.java similarity index 95% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsChannelProvisioner.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsChannelProvisioner.java index 10999ee7e919..ce8c3e6e8246 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsChannelProvisioner.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsChannelProvisioner.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning; +package com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsConsumerDestination.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsConsumerDestination.java similarity index 89% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsConsumerDestination.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsConsumerDestination.java index 52b1f1fd56cf..736441fa88a8 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsConsumerDestination.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsConsumerDestination.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning; +package com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning; import org.springframework.cloud.stream.provisioning.ConsumerDestination; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsProducerDestination.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsProducerDestination.java similarity index 90% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsProducerDestination.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsProducerDestination.java index 0b8789184b7b..ee3ca188c9cb 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsProducerDestination.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsProducerDestination.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning; +package com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning; import org.springframework.cloud.stream.provisioning.ProducerDestination; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsBindingProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsBindingProperties.java index e2010e7ad0fd..e259af27dd5b 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsBindingProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsBindingProperties.java @@ -6,10 +6,16 @@ import org.springframework.cloud.stream.binder.BinderSpecificPropertiesProvider; /** - * + * Event Hubs binding properties */ public class EventHubsBindingProperties implements BinderSpecificPropertiesProvider { + /** + * Creates an instance of {@link EventHubsBindingProperties}. + */ + public EventHubsBindingProperties() { + } + private EventHubsConsumerProperties consumer = new EventHubsConsumerProperties(); private EventHubsProducerProperties producer = new EventHubsProducerProperties(); diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsConsumerProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsConsumerProperties.java index 5f801abcdbdd..6d18904567d8 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsConsumerProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsConsumerProperties.java @@ -7,10 +7,16 @@ import com.azure.spring.messaging.eventhubs.core.properties.ProcessorProperties; /** - * + * Event Hubs consumer properties */ public class EventHubsConsumerProperties extends ProcessorProperties { + /** + * Creates an instance of {@link EventHubsConsumerProperties}. + */ + public EventHubsConsumerProperties() { + } + private final CheckpointConfig checkpoint = new CheckpointConfig(); /** diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsExtendedBindingProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsExtendedBindingProperties.java index 2ce659eb23cb..1449dfaa2bf7 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsExtendedBindingProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsExtendedBindingProperties.java @@ -23,6 +23,12 @@ public class EventHubsExtendedBindingProperties EventHubsBindingProperties> implements InitializingBean { + /** + * Creates an instance of {@link EventHubsExtendedBindingProperties} + */ + public EventHubsExtendedBindingProperties() { + } + /** * Event Hubs extended binding properties prefix. */ diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsProducerProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsProducerProperties.java index b7dab7ab631c..030fee6919d2 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsProducerProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/properties/EventHubsProducerProperties.java @@ -8,9 +8,16 @@ import java.time.Duration; /** - * + * Event Hubs producer properties */ public class EventHubsProducerProperties extends ProducerProperties { + + /** + * Creates an instance of {@link EventHubsProducerProperties}. + */ + public EventHubsProducerProperties() { + } + /** * Whether the producer should act in a synchronous manner with respect to sending messages into destination. * If true, the producer will wait for a response from Event Hub after a send operation before sending next message. diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/package-info.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/package-info.java deleted file mode 100644 index db7638634923..000000000000 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Event Hubs provision core abstraction. - */ -package com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsChannelProvisionerTests.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsChannelProvisionerTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsChannelProvisionerTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsChannelProvisionerTests.java index 4ab5e77d7338..07cc3e47fb6e 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/core/provisioning/EventHubsChannelProvisionerTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/core/implementation/provisioning/EventHubsChannelProvisionerTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning; +package com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md index 87056a4f02ff..3485bcbccd9d 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,10 +99,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. @@ -66,14 +123,30 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml index 9874b5d57fc8..d252280edb14 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-stream-binder-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Stream Binder Event Hubs Spring Cloud Azure Stream Binder Event Hubs @@ -32,17 +32,20 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-cloud-azure-autoconfigure - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-stream-binder-eventhubs-core - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -53,20 +56,20 @@ org.springframework.boot spring-boot-starter-actuator - 2.7.18 + 3.3.0 true com.azure.spring spring-cloud-azure-resourcemanager - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.cloud - spring-cloud-stream-binder-test - 3.2.10 + spring-cloud-stream-test-binder + 4.1.1 test @@ -78,13 +81,7 @@ org.springframework.boot spring-boot-starter-test - 2.7.18 - test - - - org.mockito - mockito-core - 4.11.0 + 3.3.0 test @@ -92,13 +89,13 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test provided + + + + org.mockito + mockito-core + 5.11.0 + test + + + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -121,7 +190,7 @@ - org.springframework.boot:spring-boot-starter-actuator:[2.7.18] + org.springframework.boot:spring-boot-starter-actuator:[3.3.0] @@ -130,7 +199,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsHealthIndicator.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsHealthIndicator.java similarity index 96% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsHealthIndicator.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsHealthIndicator.java index 9e5afc2c6118..08dafd89667e 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsHealthIndicator.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation; import com.azure.spring.integration.core.instrumentation.Instrumentation; import com.azure.spring.integration.core.instrumentation.InstrumentationManager; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelBinder.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelBinder.java similarity index 98% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelBinder.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelBinder.java index c7612615c003..b68a16455544 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelBinder.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelBinder.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils; @@ -10,7 +10,7 @@ import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsExtendedBindingProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; import com.azure.spring.integration.core.handler.DefaultMessageHandler; import com.azure.spring.integration.core.implementation.instrumentation.DefaultInstrumentation; import com.azure.spring.integration.core.implementation.instrumentation.DefaultInstrumentationManager; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderConfiguration.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfiguration.java similarity index 85% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderConfiguration.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfiguration.java index 547f098cf75c..5c8773fc0f53 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderConfiguration.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfiguration.java @@ -1,26 +1,28 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.config; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.config; import com.azure.core.credential.TokenCredential; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventProcessorClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.eventhubs.AzureEventHubsMessagingAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsMessagingAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureEventHubsResourceManagerAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureEventHubsResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureResourceManagerAutoConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver; -import com.azure.spring.cloud.resourcemanager.provisioning.EventHubsProvisioner; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsMessageChannelBinder; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.EventHubsProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.config.EventHubsProcessorFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.eventhubs.config.EventHubsProducerFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsMessageChannelBinder; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsExtendedBindingProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; -import com.azure.spring.cloud.stream.binder.eventhubs.provisioning.EventHubsChannelResourceManagerProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.provisioning.EventHubsChannelResourceManagerProvisioner; import com.azure.spring.messaging.eventhubs.core.DefaultEventHubsNamespaceProcessorFactory; import com.azure.spring.messaging.eventhubs.core.DefaultEventHubsNamespaceProducerFactory; import com.azure.spring.messaging.eventhubs.core.EventHubsProcessorFactory; @@ -36,7 +38,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; /** * @@ -80,7 +82,7 @@ EventHubsChannelProvisioner eventHubChannelArmProvisioner( */ @Bean @ConditionalOnMissingBean({ EventHubsProvisioner.class, EventHubsChannelProvisioner.class }) - public EventHubsChannelProvisioner eventHubChannelProvisioner() { + EventHubsChannelProvisioner eventHubChannelProvisioner() { return new EventHubsChannelProvisioner(); } @@ -98,7 +100,7 @@ public EventHubsChannelProvisioner eventHubChannelProvisioner() { */ @Bean @ConditionalOnMissingBean - public EventHubsMessageChannelBinder eventHubBinder(EventHubsChannelProvisioner channelProvisioner, + EventHubsMessageChannelBinder eventHubBinder(EventHubsChannelProvisioner channelProvisioner, EventHubsExtendedBindingProperties bindingProperties, ObjectProvider namespaceProperties, ObjectProvider checkpointStores, diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderHealthIndicatorConfiguration.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderHealthIndicatorConfiguration.java similarity index 79% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderHealthIndicatorConfiguration.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderHealthIndicatorConfiguration.java index 162aa9a35831..3db24821020b 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderHealthIndicatorConfiguration.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderHealthIndicatorConfiguration.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.config; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.config; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsHealthIndicator; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsMessageChannelBinder; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsHealthIndicator; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsMessageChannelBinder; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/ExtendedBindingHandlerMappingsProviderConfiguration.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/ExtendedBindingHandlerMappingsProviderConfiguration.java new file mode 100644 index 000000000000..f3dcfc8c6d7b --- /dev/null +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/ExtendedBindingHandlerMappingsProviderConfiguration.java @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.config; + +import org.springframework.boot.context.properties.source.ConfigurationPropertyName; +import org.springframework.cloud.stream.config.BindingHandlerAdvise; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; +import java.util.Map; + +/** + * Configuration for EventHubs extended binding metadata. + */ +@Configuration +class ExtendedBindingHandlerMappingsProviderConfiguration { + + /** + * Provide mappings for EventHubs extended properties. + * @return the mappings for EventHubs extended properties. + */ + @Bean + BindingHandlerAdvise.MappingsProvider eventHubsExtendedPropertiesDefaultMappingsProvider() { + return () -> { + Map mappings = new HashMap<>(); + mappings.put( + ConfigurationPropertyName.of("spring.cloud.stream.eventhubs.bindings"), + ConfigurationPropertyName.of("spring.cloud.stream.eventhubs.default")); + return mappings; + }; + } + +} diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/provisioning/EventHubsChannelResourceManagerProvisioner.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/provisioning/EventHubsChannelResourceManagerProvisioner.java similarity index 81% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/provisioning/EventHubsChannelResourceManagerProvisioner.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/provisioning/EventHubsChannelResourceManagerProvisioner.java index a3d295db8e1c..ed33006b0ed7 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/provisioning/EventHubsChannelResourceManagerProvisioner.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/provisioning/EventHubsChannelResourceManagerProvisioner.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.provisioning; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.provisioning; -import com.azure.spring.cloud.resourcemanager.provisioning.EventHubsProvisioner; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.EventHubsProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; import org.springframework.lang.NonNull; import org.springframework.util.Assert; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/package-info.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/package-info.java deleted file mode 100644 index cbf418ddbdfe..000000000000 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * The Spring Cloud Azure Stream Binder Event Hubs package. - */ -package com.azure.spring.cloud.stream.binder.eventhubs; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/provisioning/package-info.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/provisioning/package-info.java deleted file mode 100644 index a6c2764c4d5f..000000000000 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/java/com/azure/spring/cloud/stream/binder/eventhubs/provisioning/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Event Hubs stream binder channel provision. - */ -package com.azure.spring.cloud.stream.binder.eventhubs.provisioning; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring.binders b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring.binders index 81716db596ea..d4318888983f 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring.binders +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring.binders @@ -1 +1 @@ -eventhubs=com.azure.spring.cloud.stream.binder.eventhubs.config.EventHubsBinderConfiguration +eventhubs=com.azure.spring.cloud.stream.binder.eventhubs.implementation.config.EventHubsBinderConfiguration diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..4ce18f2c304d --- /dev/null +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.azure.spring.cloud.stream.binder.eventhubs.implementation.config.ExtendedBindingHandlerMappingsProviderConfiguration diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsHealthIndicatorTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsHealthIndicatorTests.java index 514898aca2f3..e3d4504ea8ab 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsHealthIndicatorTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation; import com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore; import com.azure.spring.cloud.service.eventhubs.properties.EventBatchProperties; @@ -9,7 +9,7 @@ import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsExtendedBindingProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; import com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelBinderTests.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelBinderTests.java similarity index 93% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelBinderTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelBinderTests.java index dddf8e20ddf4..066e030c936b 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelBinderTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelBinderTests.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelTestBinder.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelTestBinder.java similarity index 93% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelTestBinder.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelTestBinder.java index 4d0e02f0626a..bbf005d13871 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/EventHubsMessageChannelTestBinder.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/EventHubsMessageChannelTestBinder.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; import com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter; import com.azure.spring.integration.core.handler.DefaultMessageHandler; import com.azure.spring.integration.core.implementation.instrumentation.DefaultInstrumentation; @@ -74,13 +74,13 @@ public MessageHandler createProducerMessageHandler(ProducerDestination destinati return handler; } - public void addProducerDownInstrumentation() { + void addProducerDownInstrumentation() { DefaultInstrumentation producer = new DefaultInstrumentation("producer", Instrumentation.Type.PRODUCER); producer.setStatus(Instrumentation.Status.DOWN, new IllegalArgumentException("Producer exception")); getInstrumentationManager().addHealthInstrumentation(producer); } - public void addProcessorDownInstrumentation() { + void addProcessorDownInstrumentation() { DefaultInstrumentation processor = new DefaultInstrumentation("Processor", Instrumentation.Type.PRODUCER); processor.setStatus(Instrumentation.Status.DOWN, new IllegalArgumentException("Processor exception")); getInstrumentationManager().addHealthInstrumentation(processor); diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderConfigurationTests.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfigurationTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderConfigurationTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfigurationTests.java index a88ab91716ff..960a3e9cbd19 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderConfigurationTests.java @@ -1,21 +1,23 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.config; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.config; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.EventHubClientBuilder; import com.azure.messaging.eventhubs.EventProcessorClientBuilder; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; -import com.azure.spring.cloud.resourcemanager.provisioning.EventHubsProvisioner; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsMessageChannelBinder; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsMessageChannelTestBinder; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.EventHubsProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.config.EventHubsProcessorFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.eventhubs.config.EventHubsProducerFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsMessageChannelBinder; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsMessageChannelTestBinder; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsExtendedBindingProperties; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsProducerProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.core.provisioning.EventHubsChannelProvisioner; -import com.azure.spring.cloud.stream.binder.eventhubs.provisioning.EventHubsChannelResourceManagerProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.core.implementation.provisioning.EventHubsChannelProvisioner; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.provisioning.EventHubsChannelResourceManagerProvisioner; import com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode; import com.azure.spring.messaging.eventhubs.core.listener.EventHubsMessageListenerContainer; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderHealthIndicatorConfigurationTests.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderHealthIndicatorConfigurationTests.java similarity index 77% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderHealthIndicatorConfigurationTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderHealthIndicatorConfigurationTests.java index 15c4b301ee00..57355c985b19 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/EventHubsBinderHealthIndicatorConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/EventHubsBinderHealthIndicatorConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.config; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.config; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsHealthIndicator; -import com.azure.spring.cloud.stream.binder.eventhubs.EventHubsMessageChannelBinder; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsHealthIndicator; +import com.azure.spring.cloud.stream.binder.eventhubs.implementation.EventHubsMessageChannelBinder; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java index 33b533042dfc..6b88c1518eb8 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/src/test/java/com/azure/spring/cloud/stream/binder/eventhubs/implementation/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.eventhubs.config; +package com.azure.spring.cloud.stream.binder.eventhubs.implementation.config; import com.azure.messaging.eventhubs.LoadBalancingStrategy; import com.azure.spring.cloud.stream.binder.eventhubs.core.properties.EventHubsConsumerProperties; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md index 4d5324a996d4..b33897d404bd 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,10 +99,22 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. @@ -66,14 +123,30 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.5.0 (2022-12-06) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml index 9a0136982213..92a26f09387c 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-stream-binder-servicebus-core - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Stream Binder Service Bus Core Spring Cloud Azure Stream Binder Service Bus Core @@ -32,18 +32,21 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + org.springframework.cloud spring-cloud-stream - 3.2.10 + 4.1.1 com.azure.spring spring-integration-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure @@ -53,14 +56,14 @@ org.springframework.boot spring-boot-configuration-processor - 2.7.18 + 3.3.0 true org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -68,25 +71,25 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework spring-test - 5.3.32 + 6.1.8 test @@ -102,19 +105,94 @@ org.springframework.boot spring-boot-test - 2.7.18 + 3.3.0 test org.assertj assertj-core - 3.22.0 + 3.25.3 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + annotation-process + + compile + + + + -proc:only + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -123,8 +201,8 @@ - org.springframework.boot:spring-boot-configuration-processor:[2.7.18] - org.springframework.cloud:spring-cloud-stream:[3.2.10] + org.springframework.boot:spring-boot-configuration-processor:[3.3.0] + org.springframework.cloud:spring-cloud-stream:[4.1.1] @@ -133,7 +211,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 @@ -144,64 +222,4 @@ - - - - annotation-process-for-java-8 - - [1.8,9) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - annotation-process-for-java-8 - - compile - - - - -proc:only - - - - - - - - - - annotation-process-for-java-11 - - [11,) - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - - annotation-process-for-java-11 - - compile - - - - -proc:only - - 11 - - - - - - - - diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusChannelProvisioner.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusChannelProvisioner.java similarity index 96% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusChannelProvisioner.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusChannelProvisioner.java index e2fa2f530a6b..0d5527680bfe 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusChannelProvisioner.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusChannelProvisioner.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.core.provisioning; +package com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusConsumerDestination.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusConsumerDestination.java similarity index 86% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusConsumerDestination.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusConsumerDestination.java index f28456ac0768..48c84081f528 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusConsumerDestination.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusConsumerDestination.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.core.provisioning; +package com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning; import org.springframework.cloud.stream.provisioning.ConsumerDestination; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusProducerDestination.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusProducerDestination.java similarity index 88% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusProducerDestination.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusProducerDestination.java index 010e5381e74a..8893209370f5 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusProducerDestination.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusProducerDestination.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.core.provisioning; +package com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning; import org.springframework.cloud.stream.provisioning.ProducerDestination; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusBindingProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusBindingProperties.java index d2f7a899808d..0e677b87a72a 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusBindingProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusBindingProperties.java @@ -6,9 +6,16 @@ import org.springframework.cloud.stream.binder.BinderSpecificPropertiesProvider; /** - * + * Service Bus binding properties. */ public class ServiceBusBindingProperties implements BinderSpecificPropertiesProvider { + + /** + * Creates an instance of {@link ServiceBusBindingProperties}. + */ + public ServiceBusBindingProperties() { + } + private ServiceBusConsumerProperties consumer = new ServiceBusConsumerProperties(); private ServiceBusProducerProperties producer = new ServiceBusProducerProperties(); diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerProperties.java index e9edc6034f7b..b061d03f867b 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerProperties.java @@ -14,7 +14,14 @@ */ public class ServiceBusConsumerProperties extends ProcessorProperties implements ServiceBusEntityOptionsProvider { + /** + * Create an instance of {@link ServiceBusConsumerProperties}. + */ + public ServiceBusConsumerProperties() { + } + private boolean requeueRejected; + private Long maxSizeInMegabytes = 1024L; private Duration defaultMessageTimeToLive = MAX_DURATION; @@ -36,6 +43,7 @@ public void setRequeueRejected(boolean requeueRejected) { this.requeueRejected = requeueRejected; } + @Override public Long getMaxSizeInMegabytes() { return maxSizeInMegabytes; } @@ -48,6 +56,7 @@ public void setMaxSizeInMegabytes(Long maxSizeInMegabytes) { this.maxSizeInMegabytes = maxSizeInMegabytes; } + @Override public Duration getDefaultMessageTimeToLive() { return defaultMessageTimeToLive; } diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusExtendedBindingProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusExtendedBindingProperties.java index f076ee83ace6..6bff9a32ebfd 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusExtendedBindingProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusExtendedBindingProperties.java @@ -17,7 +17,7 @@ import static com.azure.spring.cloud.service.implementation.core.PropertiesValidator.validateNamespace; /** - * + * Service Bus extended binding properties */ @ConfigurationProperties("spring.cloud.stream.servicebus") public class ServiceBusExtendedBindingProperties @@ -25,6 +25,12 @@ public class ServiceBusExtendedBindingProperties ServiceBusBindingProperties> implements InitializingBean { + /** + * Creates an instance of {@link ServiceBusExtendedBindingProperties}. + */ + public ServiceBusExtendedBindingProperties() { + } + private static final String DEFAULTS_PREFIX = "spring.cloud.stream.servicebus.default"; private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBusExtendedBindingProperties.class); @Override diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerProperties.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerProperties.java index 809e25f5bbe8..da06b4656879 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerProperties.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerProperties.java @@ -10,9 +10,16 @@ import static com.azure.messaging.servicebus.implementation.ServiceBusConstants.MAX_DURATION; /** - * + * Service Bus producer properties. */ public class ServiceBusProducerProperties extends ProducerProperties implements ServiceBusEntityOptionsProvider { + + /** + * Create an instance of {@link ServiceBusProducerProperties}. + */ + public ServiceBusProducerProperties() { + } + private boolean sync = false; private Duration sendTimeout = Duration.ofMillis(10000); @@ -55,6 +62,7 @@ public void setSendTimeout(Duration sendTimeout) { this.sendTimeout = sendTimeout; } + @Override public Long getMaxSizeInMegabytes() { return maxSizeInMegabytes; } @@ -67,6 +75,7 @@ public void setMaxSizeInMegabytes(Long maxSizeInMegabytes) { this.maxSizeInMegabytes = maxSizeInMegabytes; } + @Override public Duration getDefaultMessageTimeToLive() { return defaultMessageTimeToLive; } diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/package-info.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/package-info.java deleted file mode 100644 index fd3e894b0f5f..000000000000 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Service Bus provision core abstraction. - */ -package com.azure.spring.cloud.stream.binder.servicebus.core.provisioning; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusChannelProvisionerTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusChannelProvisionerTests.java similarity index 95% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusChannelProvisionerTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusChannelProvisionerTests.java index cca1c8e90d47..58233754d83c 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/provisioning/ServiceBusChannelProvisionerTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/implementation/provisioning/ServiceBusChannelProvisionerTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.core.provisioning; +package com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerPropertiesTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerPropertiesTests.java index 90af6566bb45..346c6126695e 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerPropertiesTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusConsumerPropertiesTests.java @@ -175,4 +175,5 @@ void defaultMaxSizeInMegabytes() { void defaultMessageTimeToLive() { assertEquals(consumerProperties.getDefaultMessageTimeToLive(), MAX_DURATION); } + } diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerPropertiesTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerPropertiesTests.java index 1a3201d71eb7..77c71915087a 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerPropertiesTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/core/properties/ServiceBusProducerPropertiesTests.java @@ -107,6 +107,7 @@ void amqpTransportTypeDefaultIsNull() { assertNull(producerProperties.getClient().getTransportType()); } + @Test void defaultMaxSizeInMegabytes() { assertEquals(producerProperties.getMaxSizeInMegabytes(), 1024L); diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md index 4d5324a996d4..91f8eb3c9943 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml index 0b813cec2f25..fad237f2c97c 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-cloud-azure-stream-binder-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Cloud Azure Stream Binder Service Bus Spring Cloud Azure Stream Binder Service Bus @@ -32,27 +32,30 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-cloud-azure-stream-binder-servicebus-core - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-autoconfigure - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-cloud-azure-resourcemanager - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.boot spring-boot-starter-actuator - 2.7.18 + 3.3.0 true + spring-cloud-stream-test-binder + 4.1.1 test @@ -80,13 +83,15 @@ org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 test + + org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -94,19 +99,82 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -115,7 +183,7 @@ - org.springframework.boot:spring-boot-starter-actuator:[2.7.18] + org.springframework.boot:spring-boot-starter-actuator:[3.3.0] @@ -124,7 +192,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusHealthIndicator.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusHealthIndicator.java similarity index 96% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusHealthIndicator.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusHealthIndicator.java index 39cc7caab639..c9e066f25ed8 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusHealthIndicator.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusHealthIndicator.java @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus; +package com.azure.spring.cloud.stream.binder.servicebus.implementation; import com.azure.spring.integration.core.instrumentation.Instrumentation; import com.azure.spring.integration.core.instrumentation.InstrumentationManager; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelBinder.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelBinder.java similarity index 96% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelBinder.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelBinder.java index 35f2cfb26090..d72d672d277b 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelBinder.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelBinder.java @@ -1,8 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus; +package com.azure.spring.cloud.stream.binder.servicebus.implementation; +import com.azure.messaging.servicebus.ServiceBusMessage; +import com.azure.messaging.servicebus.ServiceBusReceivedMessage; import com.azure.messaging.servicebus.ServiceBusReceivedMessageContext; import com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils; import com.azure.spring.cloud.stream.binder.servicebus.config.ServiceBusProcessorFactoryCustomizer; @@ -10,7 +12,7 @@ import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; import com.azure.spring.integration.core.handler.DefaultMessageHandler; import com.azure.spring.integration.core.implementation.instrumentation.DefaultInstrumentation; import com.azure.spring.integration.core.implementation.instrumentation.DefaultInstrumentationManager; @@ -20,6 +22,7 @@ import com.azure.spring.integration.servicebus.implementation.health.ServiceBusProcessorInstrumentation; import com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter; import com.azure.spring.messaging.PropertiesSupplier; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.servicebus.core.ServiceBusProcessorFactory; import com.azure.spring.messaging.servicebus.core.ServiceBusTemplate; import com.azure.spring.messaging.servicebus.core.listener.ServiceBusMessageListenerContainer; @@ -30,7 +33,7 @@ import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProducerFactory; import com.azure.spring.messaging.servicebus.implementation.properties.merger.ProcessorPropertiesMerger; import com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.stream.binder.AbstractMessageChannelBinder; @@ -79,7 +82,7 @@ public class ServiceBusMessageChannelBinder extends private NamespaceProperties namespaceProperties; private ServiceBusTemplate serviceBusTemplate; private ServiceBusProcessorFactory processorFactory; - private ServiceBusMessageConverter messageConverter = new ServiceBusMessageConverter(); + private AzureMessageConverter messageConverter = new ServiceBusMessageConverter(); private final List serviceBusMessageListenerContainers = new ArrayList<>(); private final InstrumentationManager instrumentationManager = new DefaultInstrumentationManager(); private final Map> @@ -330,7 +333,7 @@ public void setNamespaceProperties(NamespaceProperties namespaceProperties) { * * @param messageConverter the message converter */ - public void setMessageConverter(ServiceBusMessageConverter messageConverter) { + public void setMessageConverter(AzureMessageConverter messageConverter) { this.messageConverter = messageConverter; } diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ExtendedBindingHandlerMappingsProviderConfiguration.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ExtendedBindingHandlerMappingsProviderConfiguration.java new file mode 100644 index 000000000000..78fdeba96e44 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ExtendedBindingHandlerMappingsProviderConfiguration.java @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.cloud.stream.binder.servicebus.implementation.config; + +import org.springframework.boot.context.properties.source.ConfigurationPropertyName; +import org.springframework.cloud.stream.config.BindingHandlerAdvise; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; +import java.util.Map; + +/** + * Configuration for ServiceBus extended binding metadata. + */ +@Configuration +class ExtendedBindingHandlerMappingsProviderConfiguration { + + /** + * Provide mappings for ServiceBus extended properties. + * @return the mappings for ServiceBus extended properties. + */ + @Bean + BindingHandlerAdvise.MappingsProvider serviceBusExtendedPropertiesDefaultMappingsProvider() { + return () -> { + Map mappings = new HashMap<>(); + mappings.put( + ConfigurationPropertyName.of("spring.cloud.stream.servicebus.bindings"), + ConfigurationPropertyName.of("spring.cloud.stream.servicebus.default")); + return mappings; + }; + } + +} diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderConfiguration.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfiguration.java similarity index 86% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderConfiguration.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfiguration.java index 20ade6d3fc39..f162bf602903 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderConfiguration.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfiguration.java @@ -1,30 +1,32 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.config; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.config; import com.azure.core.credential.TokenCredential; import com.azure.messaging.servicebus.ServiceBusClientBuilder; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalPropertiesAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.context.AzureTokenCredentialAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.servicebus.properties.AzureServiceBusProperties; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureResourceManagerAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusAutoConfiguration; -import com.azure.spring.cloud.autoconfigure.servicebus.AzureServiceBusMessagingAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.resourcemanager.AzureServiceBusResourceManagerAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusAutoConfiguration; +import com.azure.spring.cloud.autoconfigure.implementation.servicebus.AzureServiceBusMessagingAutoConfiguration; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; import com.azure.spring.cloud.core.implementation.credential.resolver.AzureTokenCredentialResolver; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; -import com.azure.spring.cloud.stream.binder.servicebus.ServiceBusMessageChannelBinder; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.ServiceBusProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.config.ServiceBusProcessorFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.servicebus.config.ServiceBusProducerFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.ServiceBusMessageChannelBinder; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; -import com.azure.spring.cloud.stream.binder.servicebus.provisioning.ServiceBusChannelResourceManagerProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.provisioning.ServiceBusChannelResourceManagerProvisioner; import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProcessorFactory; import com.azure.spring.messaging.servicebus.core.DefaultServiceBusNamespaceProducerFactory; import com.azure.spring.messaging.servicebus.core.ServiceBusProcessorFactory; import com.azure.spring.messaging.servicebus.core.ServiceBusProducerFactory; import com.azure.spring.messaging.servicebus.core.properties.NamespaceProperties; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -35,7 +37,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; +import static com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils.DEFAULT_TOKEN_CREDENTIAL_BEAN_NAME; /** * @@ -80,7 +82,7 @@ ServiceBusChannelProvisioner serviceBusChannelArmProvisioner(AzureServiceBusProp */ @Bean @ConditionalOnMissingBean({ServiceBusProvisioner.class, ServiceBusChannelProvisioner.class}) - public ServiceBusChannelProvisioner serviceBusChannelProvisioner() { + ServiceBusChannelProvisioner serviceBusChannelProvisioner() { return new ServiceBusChannelProvisioner(); } @@ -98,7 +100,7 @@ public ServiceBusChannelProvisioner serviceBusChannelProvisioner() { */ @Bean @ConditionalOnMissingBean - public ServiceBusMessageChannelBinder serviceBusBinder(ServiceBusChannelProvisioner channelProvisioner, + ServiceBusMessageChannelBinder serviceBusBinder(ServiceBusChannelProvisioner channelProvisioner, ServiceBusExtendedBindingProperties bindingProperties, ObjectProvider namespaceProperties, ObjectProvider messageConverter, diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderHealthIndicatorConfiguration.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderHealthIndicatorConfiguration.java similarity index 71% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderHealthIndicatorConfiguration.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderHealthIndicatorConfiguration.java index 66c39e40d1bc..915a78c0548a 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderHealthIndicatorConfiguration.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderHealthIndicatorConfiguration.java @@ -1,9 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.config; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.config; -import com.azure.spring.cloud.stream.binder.servicebus.ServiceBusHealthIndicator; -import com.azure.spring.cloud.stream.binder.servicebus.ServiceBusMessageChannelBinder; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.ServiceBusHealthIndicator; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.ServiceBusMessageChannelBinder; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; @@ -24,7 +24,7 @@ public class ServiceBusBinderHealthIndicatorConfiguration { * @return ServiceBusHealthIndicator bean the Service Bus Health Indicator bean */ @Bean - public ServiceBusHealthIndicator serviceBusHealthIndicator(ServiceBusMessageChannelBinder binder) { + ServiceBusHealthIndicator serviceBusHealthIndicator(ServiceBusMessageChannelBinder binder) { return new ServiceBusHealthIndicator(binder); } diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/ServiceBusChannelResourceManagerProvisioner.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/provisioning/ServiceBusChannelResourceManagerProvisioner.java similarity index 83% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/ServiceBusChannelResourceManagerProvisioner.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/provisioning/ServiceBusChannelResourceManagerProvisioner.java index 1a0edb69da3b..dcdaef375dde 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/ServiceBusChannelResourceManagerProvisioner.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/provisioning/ServiceBusChannelResourceManagerProvisioner.java @@ -1,18 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.provisioning; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.provisioning; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusEntityProperties; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.ServiceBusProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusEntityProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusQueueProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusConsumerDestination; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusProducerDestination; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusEntityOptionsProvider; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusConsumerDestination; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusProducerDestination; import org.springframework.cloud.stream.binder.ExtendedConsumerProperties; import org.springframework.cloud.stream.binder.ExtendedProducerProperties; import org.springframework.cloud.stream.provisioning.ConsumerDestination; @@ -87,5 +87,4 @@ private T buildEntityProperties( entityProperties.setMaxSizeInMegabytes(entityOptionsProvider.getMaxSizeInMegabytes()); return entityProperties; } - } diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/package-info.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/package-info.java deleted file mode 100644 index 9568a67cdf9b..000000000000 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * The Spring Cloud Azure Stream Binder Service Bus package. - */ -package com.azure.spring.cloud.stream.binder.servicebus; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/package-info.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/package-info.java deleted file mode 100644 index d84aed9fe67d..000000000000 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Service Bus stream binder channel provision. - */ -package com.azure.spring.cloud.stream.binder.servicebus.provisioning; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring.binders b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring.binders index 87eb9562859e..4565d9b14932 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring.binders +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring.binders @@ -1 +1 @@ -servicebus=com.azure.spring.cloud.stream.binder.servicebus.config.ServiceBusBinderConfiguration +servicebus=com.azure.spring.cloud.stream.binder.servicebus.implementation.config.ServiceBusBinderConfiguration diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000000..a9ffcad73b5b --- /dev/null +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.azure.spring.cloud.stream.binder.servicebus.implementation.config.ExtendedBindingHandlerMappingsProviderConfiguration diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusHealthIndicatorTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusHealthIndicatorTests.java similarity index 97% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusHealthIndicatorTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusHealthIndicatorTests.java index 9e155af07fb8..99c5bbc57783 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusHealthIndicatorTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusHealthIndicatorTests.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus; +package com.azure.spring.cloud.stream.binder.servicebus.implementation; import com.azure.spring.cloud.service.servicebus.properties.ServiceBusEntityType; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusBindingProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; import com.azure.spring.integration.core.handler.DefaultMessageHandler; import com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter; import com.azure.spring.messaging.AzureHeaders; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelBinderTest.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelBinderTest.java similarity index 96% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelBinderTest.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelBinderTest.java index 175b3dedce90..52a38b24ab53 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelBinderTest.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelBinderTest.java @@ -1,13 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus; +package com.azure.spring.cloud.stream.binder.servicebus.implementation; import com.azure.messaging.servicebus.ServiceBusReceivedMessageContext; import com.azure.spring.cloud.service.servicebus.properties.ServiceBusEntityType; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusBindingProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; import com.azure.spring.messaging.servicebus.core.properties.ServiceBusContainerProperties; import com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders; import org.junit.jupiter.api.BeforeEach; @@ -33,7 +33,7 @@ import static org.mockito.Mockito.when; import static org.mockito.Mockito.verify; -public class ServiceBusMessageChannelBinderTest { +class ServiceBusMessageChannelBinderTest { @Mock private ConsumerDestination consumerDestination; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelTestBinder.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelTestBinder.java similarity index 85% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelTestBinder.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelTestBinder.java index 7b7ddc3e9a50..7e3fe0180cb0 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/ServiceBusMessageChannelTestBinder.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/ServiceBusMessageChannelTestBinder.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus; +package com.azure.spring.cloud.stream.binder.servicebus.implementation; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; import com.azure.spring.integration.core.implementation.instrumentation.DefaultInstrumentation; import com.azure.spring.integration.core.instrumentation.Instrumentation; import org.springframework.cloud.stream.binder.ExtendedConsumerProperties; @@ -16,7 +16,7 @@ import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; -public class ServiceBusMessageChannelTestBinder extends ServiceBusMessageChannelBinder { +class ServiceBusMessageChannelTestBinder extends ServiceBusMessageChannelBinder { /** * Construct a {@link ServiceBusMessageChannelBinder} with the specified headersToEmbed and {@link @@ -25,7 +25,7 @@ public class ServiceBusMessageChannelTestBinder extends ServiceBusMessageChannel * @param headersToEmbed the headers to embed * @param provisioningProvider the provisioning provider */ - public ServiceBusMessageChannelTestBinder(String[] headersToEmbed, + ServiceBusMessageChannelTestBinder(String[] headersToEmbed, ServiceBusChannelProvisioner provisioningProvider) { super(headersToEmbed, provisioningProvider); } @@ -38,13 +38,13 @@ public MessageProducer createConsumerEndpoint(ConsumerDestination destination, S return super.createConsumerEndpoint(destination, group, properties); } - public void addProducerDownInstrumentation() { + void addProducerDownInstrumentation() { DefaultInstrumentation producer = new DefaultInstrumentation("producer", Instrumentation.Type.PRODUCER); producer.setStatus(Instrumentation.Status.DOWN, new IllegalArgumentException("Producer exception")); getInstrumentationManager().addHealthInstrumentation(producer); } - public void addProcessorDownInstrumentation() { + void addProcessorDownInstrumentation() { DefaultInstrumentation processor = new DefaultInstrumentation("Processor", Instrumentation.Type.PRODUCER); processor.setStatus(Instrumentation.Status.DOWN, new IllegalArgumentException("Processor exception")); getInstrumentationManager().addHealthInstrumentation(processor); diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java similarity index 98% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java index 374f2daaf48e..ceecbe00bab9 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ExtendedBindingHandlerMappingsProviderAutoConfigurationTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.config; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.config; import com.azure.spring.cloud.service.servicebus.properties.ServiceBusEntityType; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderConfigurationTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfigurationTests.java similarity index 94% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderConfigurationTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfigurationTests.java index 5fee8d2054ff..b45df7e6b115 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderConfigurationTests.java @@ -1,20 +1,22 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.config; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.config; import com.azure.messaging.servicebus.ServiceBusClientBuilder; import com.azure.messaging.servicebus.models.ServiceBusReceiveMode; import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.ServiceBusProvisioner; import com.azure.spring.cloud.service.servicebus.properties.ServiceBusEntityType; -import com.azure.spring.cloud.stream.binder.servicebus.ServiceBusMessageChannelBinder; +import com.azure.spring.cloud.stream.binder.servicebus.config.ServiceBusProcessorFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.servicebus.config.ServiceBusProducerFactoryCustomizer; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.ServiceBusMessageChannelBinder; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusExtendedBindingProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; -import com.azure.spring.cloud.stream.binder.servicebus.core.provisioning.ServiceBusChannelProvisioner; -import com.azure.spring.cloud.stream.binder.servicebus.provisioning.ServiceBusChannelResourceManagerProvisioner; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.cloud.stream.binder.servicebus.core.implementation.provisioning.ServiceBusChannelProvisioner; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.provisioning.ServiceBusChannelResourceManagerProvisioner; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -29,7 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; -public class ServiceBusBinderConfigurationTests { +class ServiceBusBinderConfigurationTests { private static final String CONNECTION_STRING_FORMAT = "Endpoint=sb://%s.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=key"; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderHealthIndicatorConfigurationTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderHealthIndicatorConfigurationTests.java similarity index 76% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderHealthIndicatorConfigurationTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderHealthIndicatorConfigurationTests.java index d2f1507cea1c..efabbcecf2cb 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/config/ServiceBusBinderHealthIndicatorConfigurationTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/config/ServiceBusBinderHealthIndicatorConfigurationTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.config; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.config; -import com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties; -import com.azure.spring.cloud.stream.binder.servicebus.ServiceBusHealthIndicator; -import com.azure.spring.cloud.stream.binder.servicebus.ServiceBusMessageChannelBinder; +import com.azure.spring.cloud.autoconfigure.implementation.context.properties.AzureGlobalProperties; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.ServiceBusHealthIndicator; +import com.azure.spring.cloud.stream.binder.servicebus.implementation.ServiceBusMessageChannelBinder; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/ServiceBusChannelResourceManagerProvisionerTests.java b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/provisioning/ServiceBusChannelResourceManagerProvisionerTests.java similarity index 90% rename from sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/ServiceBusChannelResourceManagerProvisionerTests.java rename to sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/provisioning/ServiceBusChannelResourceManagerProvisionerTests.java index b517149273ea..61a6460e8d31 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/provisioning/ServiceBusChannelResourceManagerProvisionerTests.java +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/src/test/java/com/azure/spring/cloud/stream/binder/servicebus/implementation/provisioning/ServiceBusChannelResourceManagerProvisionerTests.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.cloud.stream.binder.servicebus.provisioning; +package com.azure.spring.cloud.stream.binder.servicebus.implementation.provisioning; -import com.azure.spring.cloud.resourcemanager.provisioning.ServiceBusProvisioner; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusQueueProperties; -import com.azure.spring.cloud.resourcemanager.provisioning.properties.ServiceBusTopicProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.ServiceBusProvisioner; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusQueueProperties; +import com.azure.spring.cloud.resourcemanager.implementation.provisioning.properties.ServiceBusTopicProperties; import com.azure.spring.cloud.service.servicebus.properties.ServiceBusEntityType; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusConsumerProperties; import com.azure.spring.cloud.stream.binder.servicebus.core.properties.ServiceBusProducerProperties; diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md b/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md deleted file mode 100644 index 87056a4f02ff..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md +++ /dev/null @@ -1,108 +0,0 @@ -# Release History - -## 4.20.0-beta.1 (Unreleased) - -### Features Added - -### Breaking Changes - -### Bugs Fixed - -### Other Changes - -## 4.19.0 (2024-06-03) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. - -## 4.18.0 (2024-05-07) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. - -## 4.17.0 (2024-03-28) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. - -## 4.16.0 (2024-02-28) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. - -## 4.15.0 (2024-02-02) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. - -## 4.14.0 (2023-12-14) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. - -## 4.13.0 (2023-11-07) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. - -## 4.12.0 (2023-10-23) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. - -## 4.11.0 (2023-08-25) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. - -## 4.10.0 (2023-08-01) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. - -## 4.9.0 (2023-06-29) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. - -## 4.8.0 (2023-05-25) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. - -## 4.7.0 (2023-03-23) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. - -## 4.6.0 (2023-02-07) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. - -## 4.5.0 (2022-12-06) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. - -## 4.4.1 (2022-10-31) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. - -## 4.4.0 (2022-09-26) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. - -## 4.5.0-beta.1 (2022-09-23) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-beta1-2022-09-23) for more details. - -## 4.3.0 (2022-06-29) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#430-2022-06-29) for more details. - -## 4.2.0 (2022-05-26) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#420-2022-05-26) for more details. - -## 4.1.0 (2022-05-05) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#410-2022-05-05) for more details. - -## 4.0.0 (2022-03-28) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#400-2022-03-28) for more details. - -## 4.0.0-beta.3 (2022-01-18) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#400-beta3-2022-01-18) for more details. - -## 4.0.0-beta.2 (2021-11-22) - -Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#400-beta2-2021-11-22) for more details. - diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/README.md b/sdk/spring/spring-cloud-azure-trace-sleuth/README.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/pom.xml b/sdk/spring/spring-cloud-azure-trace-sleuth/pom.xml deleted file mode 100644 index cb4fdcb6781c..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/pom.xml +++ /dev/null @@ -1,139 +0,0 @@ - - - - com.azure - azure-client-sdk-parent - 1.7.0 - ../../parents/azure-client-sdk-parent - - 4.0.0 - - com.azure.spring - spring-cloud-azure-trace-sleuth - 4.20.0-beta.1 - - Spring Cloud Azure Trace on Sleuth - https://microsoft.github.io/spring-cloud-azure - - - Spring Cloud Azure - SpringIntegSupport@microsoft.com - - - - scm:git:git@github.com:Azure/azure-sdk-for-java.git - scm:git:ssh://git@github.com:Azure/azure-sdk-for-java.git - https://github.com/Azure/azure-sdk-for-java - - - GitHub - https://github.com/Azure/azure-sdk-for-java/issues - - - - - com.azure.spring - spring-cloud-azure-core - 4.20.0-beta.1 - - - org.springframework.cloud - spring-cloud-sleuth-api - 3.1.10 - - - org.mockito - mockito-core - 4.11.0 - test - - - - - net.bytebuddy - byte-buddy - 1.14.12 - test - - - net.bytebuddy - byte-buddy-agent - 1.14.12 - test - - - com.azure - azure-core-test - 1.26.0 - test - - - org.junit.jupiter - junit-jupiter-api - 5.9.3 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.9.3 - test - - - org.junit.jupiter - junit-jupiter-params - 5.9.3 - test - - - com.azure - azure-storage-blob - 12.26.1 - test - - - - - com.google.code.findbugs - jsr305 - 3.0.2 - provided - - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 3.4.1 - - - - - org.springframework.cloud:spring-cloud-sleuth-api:[3.1.10] - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - - com.azure.spring.cloud.trace.sleuth - - - - - - - diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/SleuthHttpPolicy.java b/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/SleuthHttpPolicy.java deleted file mode 100644 index fe6f6615e34b..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/SleuthHttpPolicy.java +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.trace.sleuth; - -import com.azure.core.exception.HttpResponseException; -import com.azure.core.http.HttpPipelineCallContext; -import com.azure.core.http.HttpPipelineNextPolicy; -import com.azure.core.http.HttpRequest; -import com.azure.core.http.HttpResponse; -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.core.http.policy.RetryPolicy; -import com.azure.core.util.CoreUtils; -import com.azure.core.util.UrlBuilder; -import com.azure.spring.cloud.trace.sleuth.implementation.HttpTraceUtil; -import org.springframework.cloud.sleuth.Span; -import org.springframework.cloud.sleuth.Tracer; -import org.springframework.util.Assert; -import reactor.core.publisher.Mono; -import reactor.core.publisher.Signal; -import reactor.util.context.Context; -import reactor.util.context.ContextView; - -import java.util.Optional; - -import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; -import static com.azure.core.util.tracing.Tracer.DISABLE_TRACING_KEY; -import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY; - -/** - * Pipeline policy that creates a Sleuth span which traces the service request, - * this policy will be placed after a {@link RetryPolicy} by default. - */ -public class SleuthHttpPolicy implements HttpPipelinePolicy { - - // Singleton Sleuth tracer capable of starting and exporting spans. - private final Tracer tracer; - - // standard attributes with http call information - private static final String HTTP_USER_AGENT = "http.user_agent"; - private static final String HTTP_METHOD = "http.method"; - private static final String HTTP_URL = "http.url"; - private static final String HTTP_STATUS_CODE = "http.status_code"; - private static final String REQUEST_ID = "x-ms-request-id"; - private static final String AZ_NAMESPACE_KEY = "az.namespace"; - - /** - * Creates a new instance of {@link SleuthHttpPolicy}. - * @param tracer the tracer - */ - public SleuthHttpPolicy(Tracer tracer) { - Assert.notNull(tracer, "tracer must not be null!"); - this.tracer = tracer; - } - - @Override - public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { - if ((boolean) context.getData(DISABLE_TRACING_KEY).orElse(false)) { - return next.process(); - } - - Span parentSpan = (Span) context.getData(PARENT_TRACE_CONTEXT_KEY).orElse(tracer.currentSpan()); - HttpRequest request = context.getHttpRequest(); - - // Build new child span representing this outgoing request. - final UrlBuilder urlBuilder = UrlBuilder.parse(context.getHttpRequest().getUrl()); - Span.Builder spanBuilder = tracer.spanBuilder().name(urlBuilder.getPath()); - if (parentSpan != null) { - spanBuilder.setParent(parentSpan.context()); - } - - // A span's kind can be SERVER (incoming request) or CLIENT (outgoing request); - spanBuilder.kind(Span.Kind.CLIENT); - - // Starting the span makes the sampling decision (nothing is logged at this time) - Span span = spanBuilder.start(); - - // If span is sampled in, add additional TRACING attributes - if (!span.isNoop()) { - addSpanRequestAttributes(span, request, context); // Adds HTTP method, URL, & user-agent - } - - // run the next policy and handle success and error - return next.process() - .doOnEach(SleuthHttpPolicy::handleResponse) - .contextWrite(Context.of("TRACING_SPAN", span)); - } - - private static void addSpanRequestAttributes(Span span, HttpRequest request, - HttpPipelineCallContext context) { - putTagIfNotEmptyOrNull(span, HTTP_USER_AGENT, - request.getHeaders().getValue("User-Agent")); - putTagIfNotEmptyOrNull(span, HTTP_METHOD, request.getHttpMethod().toString()); - putTagIfNotEmptyOrNull(span, HTTP_URL, request.getUrl().toString()); - Optional tracingNamespace = context.getData(AZ_TRACING_NAMESPACE_KEY); - tracingNamespace.ifPresent(o -> putTagIfNotEmptyOrNull(span, AZ_NAMESPACE_KEY, - o.toString())); - } - - private static void putTagIfNotEmptyOrNull(Span span, String key, String value) { - // AttributeValue will throw an error if the value is null. - if (!CoreUtils.isNullOrEmpty(value)) { - span.tag(key, value); - } - } - - /** - * Handles retrieving the information from the service response and ending the span. - * - * @param signal Reactive Stream signal fired by Reactor. - */ - private static void handleResponse(Signal signal) { - // Ignore the on complete and on subscribe events, they don't contain the information needed to end the span. - if (signal.isOnComplete() || signal.isOnSubscribe()) { - return; - } - - // Get the context that was added to the mono, this will contain the information needed to end the span. - ContextView context = signal.getContextView(); - Optional tracingSpan = context.getOrEmpty("TRACING_SPAN"); - - if (!tracingSpan.isPresent()) { - return; - } - - Span span = tracingSpan.get(); - HttpResponse httpResponse = null; - Throwable error = null; - if (signal.isOnNext()) { - httpResponse = signal.get(); - } else { - error = signal.getThrowable(); - if (error instanceof HttpResponseException) { - HttpResponseException exception = (HttpResponseException) error; - httpResponse = exception.getResponse(); - } - } - - spanEnd(span, httpResponse, error); - } - - /** - * Sets status information and ends the span. - * - * @param span Span to end. - * @param response Response from the service. - * @param error Potential error returned from the service. - */ - private static void spanEnd(Span span, HttpResponse response, Throwable error) { - if (!span.isNoop()) { - int statusCode = 0; - String requestId = null; - if (response != null) { - statusCode = response.getStatusCode(); - requestId = response.getHeaderValue(REQUEST_ID); - } - - putTagIfNotEmptyOrNull(span, REQUEST_ID, requestId); - span.tag(HTTP_STATUS_CODE, String.valueOf(statusCode)); - span = HttpTraceUtil.setSpanStatus(span, statusCode, error); - } - - // Ending the span schedules it for export if sampled in or just ignores it if sampled out. - span.end(); - } -} diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpStatus.java b/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpStatus.java deleted file mode 100644 index d481de19fdcb..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpStatus.java +++ /dev/null @@ -1,627 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.trace.sleuth.implementation; - -import org.springframework.lang.Nullable; - -/** - * Enumeration of HTTP status codes. This is a reference to - * HttpStatus - * to avoid bringing in org.springframework:spring-web dependency. - */ -public enum HttpStatus { - - /** - * {@code 100 Continue}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.2.1 - */ - CONTINUE(100, Series.INFORMATIONAL, "Continue"), - /** - * {@code 101 Switching Protocols}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.2.2 - */ - SWITCHING_PROTOCOLS(101, Series.INFORMATIONAL, "Switching Protocols"), - /** - * {@code 102 Processing}. - * - * @see WebDAV - */ - PROCESSING(102, Series.INFORMATIONAL, "Processing"), - /** - * {@code 103 Checkpoint}. - * - * @see A proposal for supporting - * resumable POST/PUT HTTP requests in HTTP/1.0 - */ - CHECKPOINT(103, Series.INFORMATIONAL, "Checkpoint"), - - // 2xx Success - - /** - * {@code 200 OK}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.3.1 - */ - OK(200, Series.SUCCESSFUL, "OK"), - /** - * {@code 201 Created}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.3.2 - */ - CREATED(201, Series.SUCCESSFUL, "Created"), - /** - * {@code 202 Accepted}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.3.3 - */ - ACCEPTED(202, Series.SUCCESSFUL, "Accepted"), - /** - * {@code 203 Non-Authoritative Information}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.3.4 - */ - NON_AUTHORITATIVE_INFORMATION(203, Series.SUCCESSFUL, "Non-Authoritative Information"), - /** - * {@code 204 No Content}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.3.5 - */ - NO_CONTENT(204, Series.SUCCESSFUL, "No Content"), - /** - * {@code 205 Reset Content}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.3.6 - */ - RESET_CONTENT(205, Series.SUCCESSFUL, "Reset Content"), - /** - * {@code 206 Partial Content}. - * - * @see HTTP/1.1: Range Requests, section 4.1 - */ - PARTIAL_CONTENT(206, Series.SUCCESSFUL, "Partial Content"), - /** - * {@code 207 Multi-Status}. - * - * @see WebDAV - */ - MULTI_STATUS(207, Series.SUCCESSFUL, "Multi-Status"), - /** - * {@code 208 Already Reported}. - * - * @see WebDAV Binding Extensions - */ - ALREADY_REPORTED(208, Series.SUCCESSFUL, "Already Reported"), - /** - * {@code 226 IM Used}. - * - * @see Delta encoding in HTTP - */ - IM_USED(226, Series.SUCCESSFUL, "IM Used"), - - // 3xx Redirection - - /** - * {@code 300 Multiple Choices}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.4.1 - */ - MULTIPLE_CHOICES(300, Series.REDIRECTION, "Multiple Choices"), - /** - * {@code 301 Moved Permanently}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.4.2 - */ - MOVED_PERMANENTLY(301, Series.REDIRECTION, "Moved Permanently"), - /** - * {@code 302 Found}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.4.3 - */ - FOUND(302, Series.REDIRECTION, "Found"), - /** - * {@code 303 See Other}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.4.4 - */ - SEE_OTHER(303, Series.REDIRECTION, "See Other"), - /** - * {@code 304 Not Modified}. - * - * @see HTTP/1.1: Conditional Requests, section 4.1 - */ - NOT_MODIFIED(304, Series.REDIRECTION, "Not Modified"), - /** - * {@code 307 Temporary Redirect}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.4.7 - */ - TEMPORARY_REDIRECT(307, Series.REDIRECTION, "Temporary Redirect"), - /** - * {@code 308 Permanent Redirect}. - * - * @see RFC 7238 - */ - PERMANENT_REDIRECT(308, Series.REDIRECTION, "Permanent Redirect"), - - // --- 4xx Client Error --- - - /** - * {@code 400 Bad Request}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.1 - */ - BAD_REQUEST(400, Series.CLIENT_ERROR, "Bad Request"), - /** - * {@code 401 Unauthorized}. - * - * @see HTTP/1.1: Authentication, section 3.1 - */ - UNAUTHORIZED(401, Series.CLIENT_ERROR, "Unauthorized"), - /** - * {@code 402 Payment Required}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.2 - */ - PAYMENT_REQUIRED(402, Series.CLIENT_ERROR, "Payment Required"), - /** - * {@code 403 Forbidden}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.3 - */ - FORBIDDEN(403, Series.CLIENT_ERROR, "Forbidden"), - /** - * {@code 404 Not Found}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.4 - */ - NOT_FOUND(404, Series.CLIENT_ERROR, "Not Found"), - /** - * {@code 405 Method Not Allowed}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.5 - */ - METHOD_NOT_ALLOWED(405, Series.CLIENT_ERROR, "Method Not Allowed"), - /** - * {@code 406 Not Acceptable}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.6 - */ - NOT_ACCEPTABLE(406, Series.CLIENT_ERROR, "Not Acceptable"), - /** - * {@code 407 Proxy Authentication Required}. - * - * @see HTTP/1.1: Authentication, section 3.2 - */ - PROXY_AUTHENTICATION_REQUIRED(407, Series.CLIENT_ERROR, "Proxy Authentication Required"), - /** - * {@code 408 Request Timeout}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.7 - */ - REQUEST_TIMEOUT(408, Series.CLIENT_ERROR, "Request Timeout"), - /** - * {@code 409 Conflict}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.5.8 - */ - CONFLICT(409, Series.CLIENT_ERROR, "Conflict"), - /** - * {@code 410 Gone}. - * - * @see - * HTTP/1.1: Semantics and Content, section 6.5.9 - */ - GONE(410, Series.CLIENT_ERROR, "Gone"), - /** - * {@code 411 Length Required}. - * - * @see - * HTTP/1.1: Semantics and Content, section 6.5.10 - */ - LENGTH_REQUIRED(411, Series.CLIENT_ERROR, "Length Required"), - /** - * {@code 412 Precondition failed}. - * - * @see - * HTTP/1.1: Conditional Requests, section 4.2 - */ - PRECONDITION_FAILED(412, Series.CLIENT_ERROR, "Precondition Failed"), - /** - * {@code 413 Payload Too Large}. - * - * @see - * HTTP/1.1: Semantics and Content, section 6.5.11 - */ - PAYLOAD_TOO_LARGE(413, Series.CLIENT_ERROR, "Payload Too Large"), - /** - * {@code 414 URI Too Long}. - * - * @see - * HTTP/1.1: Semantics and Content, section 6.5.12 - */ - URI_TOO_LONG(414, Series.CLIENT_ERROR, "URI Too Long"), - /** - * {@code 415 Unsupported Media Type}. - * - * @see - * HTTP/1.1: Semantics and Content, section 6.5.13 - */ - UNSUPPORTED_MEDIA_TYPE(415, Series.CLIENT_ERROR, "Unsupported Media Type"), - /** - * {@code 416 Requested Range Not Satisfiable}. - * - * @see HTTP/1.1: Range Requests, section 4.4 - */ - REQUESTED_RANGE_NOT_SATISFIABLE(416, Series.CLIENT_ERROR, "Requested range not satisfiable"), - /** - * {@code 417 Expectation Failed}. - * - * @see - * HTTP/1.1: Semantics and Content, section 6.5.14 - */ - EXPECTATION_FAILED(417, Series.CLIENT_ERROR, "Expectation Failed"), - /** - * {@code 418 I'm a teapot}. - * - * @see HTCPCP/1.0 - */ - I_AM_A_TEAPOT(418, Series.CLIENT_ERROR, "I'm a teapot"), - /** - * {@code 422 Unprocessable Entity}. - * - * @see WebDAV - */ - UNPROCESSABLE_ENTITY(422, Series.CLIENT_ERROR, "Unprocessable Entity"), - /** - * {@code 423 Locked}. - * - * @see WebDAV - */ - LOCKED(423, Series.CLIENT_ERROR, "Locked"), - /** - * {@code 424 Failed Dependency}. - * - * @see WebDAV - */ - FAILED_DEPENDENCY(424, Series.CLIENT_ERROR, "Failed Dependency"), - /** - * {@code 425 Too Early}. - * - * @see RFC 8470 - */ - TOO_EARLY(425, Series.CLIENT_ERROR, "Too Early"), - /** - * {@code 426 Upgrade Required}. - * - * @see Upgrading to TLS Within HTTP/1.1 - */ - UPGRADE_REQUIRED(426, Series.CLIENT_ERROR, "Upgrade Required"), - /** - * {@code 428 Precondition Required}. - * - * @see Additional HTTP Status Codes - */ - PRECONDITION_REQUIRED(428, Series.CLIENT_ERROR, "Precondition Required"), - /** - * {@code 429 Too Many Requests}. - * - * @see Additional HTTP Status Codes - */ - TOO_MANY_REQUESTS(429, Series.CLIENT_ERROR, "Too Many Requests"), - /** - * {@code 431 Request Header Fields Too Large}. - * - * @see Additional HTTP Status Codes - */ - REQUEST_HEADER_FIELDS_TOO_LARGE(431, Series.CLIENT_ERROR, "Request Header Fields Too Large"), - /** - * {@code 451 Unavailable For Legal Reasons}. - * - * @see - * An HTTP Status Code to Report Legal Obstacles - */ - UNAVAILABLE_FOR_LEGAL_REASONS(451, Series.CLIENT_ERROR, "Unavailable For Legal Reasons"), - - // --- 5xx Server Error --- - - /** - * {@code 500 Internal Server Error}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.6.1 - */ - INTERNAL_SERVER_ERROR(500, Series.SERVER_ERROR, "Internal Server Error"), - /** - * {@code 501 Not Implemented}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.6.2 - */ - NOT_IMPLEMENTED(501, Series.SERVER_ERROR, "Not Implemented"), - /** - * {@code 502 Bad Gateway}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.6.3 - */ - BAD_GATEWAY(502, Series.SERVER_ERROR, "Bad Gateway"), - /** - * {@code 503 Service Unavailable}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.6.4 - */ - SERVICE_UNAVAILABLE(503, Series.SERVER_ERROR, "Service Unavailable"), - /** - * {@code 504 Gateway Timeout}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.6.5 - */ - GATEWAY_TIMEOUT(504, Series.SERVER_ERROR, "Gateway Timeout"), - /** - * {@code 505 HTTP Version Not Supported}. - * - * @see HTTP/1.1: Semantics and Content, section - * 6.6.6 - */ - HTTP_VERSION_NOT_SUPPORTED(505, Series.SERVER_ERROR, "HTTP Version not supported"), - /** - * {@code 506 Variant Also Negotiates} - * - * @see Transparent Content Negotiation - */ - VARIANT_ALSO_NEGOTIATES(506, Series.SERVER_ERROR, "Variant Also Negotiates"), - /** - * {@code 507 Insufficient Storage} - * - * @see WebDAV - */ - INSUFFICIENT_STORAGE(507, Series.SERVER_ERROR, "Insufficient Storage"), - /** - * {@code 508 Loop Detected} - * - * @see WebDAV Binding Extensions - */ - LOOP_DETECTED(508, Series.SERVER_ERROR, "Loop Detected"), - /** - * {@code 509 Bandwidth Limit Exceeded} - */ - BANDWIDTH_LIMIT_EXCEEDED(509, Series.SERVER_ERROR, "Bandwidth Limit Exceeded"), - /** - * {@code 510 Not Extended} - * - * @see HTTP Extension Framework - */ - NOT_EXTENDED(510, Series.SERVER_ERROR, "Not Extended"), - /** - * {@code 511 Network Authentication Required}. - * - * @see Additional HTTP Status Codes - */ - NETWORK_AUTHENTICATION_REQUIRED(511, Series.SERVER_ERROR, "Network Authentication Required"); - - - private static final HttpStatus[] VALUES; - - static { - VALUES = values(); - } - - private final String reasonPhrase; - private final Series series; - private final int value; - - HttpStatus(int value, Series series, String reasonPhrase) { - this.value = value; - this.series = series; - this.reasonPhrase = reasonPhrase; - } - - /** - * Return the reason phrase of this status code. - */ - public String getReasonPhrase() { - return this.reasonPhrase; - } - - /** - * Whether this status code is in the HTTP series {@link Series#INFORMATIONAL}. - *

This is a shortcut for checking the value of {@link #series()}. - * - * @see #series() - */ - public boolean is1xxInformational() { - return (series() == Series.INFORMATIONAL); - } - - /** - * Whether this status code is in the HTTP series {@link Series#SUCCESSFUL}. - *

This is a shortcut for checking the value of {@link #series()}. - * - * @see #series() - */ - public boolean is2xxSuccessful() { - return (series() == Series.SUCCESSFUL); - } - - /** - * Whether this status code is in the HTTP series {@link Series#REDIRECTION}. - *

This is a shortcut for checking the value of {@link #series()}. - * - * @see #series() - */ - public boolean is3xxRedirection() { - return (series() == Series.REDIRECTION); - } - - /** - * Whether this status code is in the HTTP series {@link Series#CLIENT_ERROR}. - *

This is a shortcut for checking the value of {@link #series()}. - * - * @see #series() - */ - public boolean is4xxClientError() { - return (series() == Series.CLIENT_ERROR); - } - - /** - * Whether this status code is in the HTTP series {@link Series#SERVER_ERROR}. - *

This is a shortcut for checking the value of {@link #series()}. - * - * @see #series() - */ - public boolean is5xxServerError() { - return (series() == Series.SERVER_ERROR); - } - - /** - * Whether this status code is in the HTTP series {@link Series#CLIENT_ERROR} or {@link Series#SERVER_ERROR}. - *

This is a shortcut for checking the value of {@link #series()}. - * - * @see #is4xxClientError() - * @see #is5xxServerError() - */ - public boolean isError() { - return (is4xxClientError() || is5xxServerError()); - } - - /** - * Resolve the given status code to an {@code HttpStatus}, if possible. - * - * @param statusCode the HTTP status code (potentially non-standard) - * @return the corresponding {@code HttpStatus}, or {@code null} if not found - */ - @Nullable - public static HttpStatus resolve(int statusCode) { - // Use cached VALUES instead of values() to prevent array allocation. - for (HttpStatus status : VALUES) { - if (status.value == statusCode) { - return status; - } - } - return null; - } - - /** - * Return the HTTP status series of this status code. - * - * @see Series - */ - public Series series() { - return this.series; - } - - /** - * Return a string representation of this status code. - */ - @Override - public String toString() { - return this.value + " " + name(); - } - - /** - * Return the integer value of this status code. - */ - public int value() { - return this.value; - } - - /** - * Return the {@code HttpStatus} enum constant with the specified numeric value. - * - * @param statusCode the numeric value of the enum to be returned - * @return the enum constant with the specified numeric value - * @throws IllegalArgumentException if this enum has no constant for the specified numeric value - */ - public static HttpStatus valueOf(int statusCode) { - HttpStatus status = resolve(statusCode); - if (status == null) { - throw new IllegalArgumentException("No matching constant for [" + statusCode + "]"); - } - return status; - } - - - /** - * Enumeration of HTTP status series. - *

Retrievable via {@link HttpStatus#series()}. - */ - public enum Series { - - INFORMATIONAL(1), - SUCCESSFUL(2), - REDIRECTION(3), - CLIENT_ERROR(4), - SERVER_ERROR(5); - - private final int value; - - Series(int value) { - this.value = value; - } - - /** - * Resolve the given status code to an {@code HttpStatus.Series}, if possible. - * - * @param statusCode the HTTP status code (potentially non-standard) - * @return the corresponding {@code Series}, or {@code null} if not found - */ - @Nullable - public static Series resolve(int statusCode) { - int seriesCode = statusCode / 100; - for (Series series : values()) { - if (series.value == seriesCode) { - return series; - } - } - return null; - } - - /** - * Return the integer value of this status series. Ranges from 1 to 5. - */ - public int value() { - return this.value; - } - - /** - * Return the {@code Series} enum constant for the supplied status code. - * - * @param statusCode the HTTP status code (potentially non-standard) - * @return the {@code Series} enum constant for the supplied status code - * @throws IllegalArgumentException if this enum has no corresponding constant - */ - public static Series valueOf(int statusCode) { - Series series = resolve(statusCode); - if (series == null) { - throw new IllegalArgumentException("No matching constant for [" + statusCode + "]"); - } - return series; - } - } -} diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpTraceUtil.java b/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpTraceUtil.java deleted file mode 100644 index 2f7064c4d8ef..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/main/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpTraceUtil.java +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.trace.sleuth.implementation; - -import org.springframework.cloud.sleuth.Span; - -public final class HttpTraceUtil { - - private HttpTraceUtil() { - } - - /** - * Parse Spring Cloud Sleuth Status from HTTP response status code. - * - * @param span the span to set the status on. - * @param statusCode the HTTP response status code. {@code 0} means invalid response. - * @param throwable the {@link Throwable} to propagate to the span. - * @return the corresponding span. - */ - public static Span setSpanStatus(Span span, int statusCode, Throwable throwable) { - if (throwable != null) { - return span.error(throwable); - } - - // Good response from the server. - if (statusCode >= 200 && statusCode < 400) { - return span; - } - - // Error status, try to parse the error status. - HttpStatus status = HttpStatus.resolve(statusCode); - if (status != null) { - return span.tag("http.status_message", status.getReasonPhrase()); - } - return span; - } -} - diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/java/com/azure/spring/cloud/trace/sleuth/SleuthHttpPolicyTests.java b/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/java/com/azure/spring/cloud/trace/sleuth/SleuthHttpPolicyTests.java deleted file mode 100644 index dab5d9cd415c..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/java/com/azure/spring/cloud/trace/sleuth/SleuthHttpPolicyTests.java +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.trace.sleuth; - -import com.azure.core.credential.TokenCredential; -import com.azure.core.http.HttpClient; -import com.azure.core.http.HttpHeaders; -import com.azure.core.http.HttpMethod; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpPipelineBuilder; -import com.azure.core.http.HttpPipelineCallContext; -import com.azure.core.http.HttpPipelineNextPolicy; -import com.azure.core.http.HttpRequest; -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.core.test.http.MockHttpResponse; -import com.azure.identity.ClientSecretCredentialBuilder; -import com.azure.storage.blob.BlobServiceClient; -import com.azure.storage.blob.BlobServiceClientBuilder; -import com.azure.storage.blob.models.CustomerProvidedKey; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.springframework.cloud.sleuth.Span; -import org.springframework.cloud.sleuth.Tracer; -import reactor.core.publisher.Mono; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class SleuthHttpPolicyTests { - - @Mock - private Tracer tracer; - - @Mock - private HttpPipelineCallContext httpPipelineCallContext; - - @Mock - private HttpPipelineNextPolicy httpPipelineNextPolicy; - - private MockHttpResponse successResponse = spy(new MockHttpResponse(mock(HttpRequest.class), 200)); - - @BeforeEach - public void setup() { - MockitoAnnotations.openMocks(this); - } - - @AfterEach - public void cleanup() throws Exception { - MockitoAnnotations.openMocks(this).close(); - } - - @Test - public void addPolicyForBlobServiceClientBuilder() { - SleuthHttpPolicy sleuthHttpPolicy = new SleuthHttpPolicy(tracer); - // key is test-key - CustomerProvidedKey providedKey = new CustomerProvidedKey("dGVzdC1rZXk="); - TokenCredential tokenCredential = new ClientSecretCredentialBuilder() - .clientSecret("dummy-secret") - .clientId("dummy-client-id") - .tenantId("dummy-tenant-id") - .build(); - BlobServiceClient blobServiceClient = new BlobServiceClientBuilder() - .customerProvidedKey(providedKey) - .credential(tokenCredential) - .addPolicy(sleuthHttpPolicy) - .endpoint("https://test.blob.core.windows.net/") - .buildClient(); - - HttpPipeline pipeline = blobServiceClient.getHttpPipeline(); - assertTrue(pipeline.getPolicyCount() >= 10); - boolean sleuthPolicyFound = false; - int policyCount = pipeline.getPolicyCount(); - for (int i = 0; i < policyCount; i++) { - if (SleuthHttpPolicy.class.equals(pipeline.getPolicy(i).getClass())) { - sleuthPolicyFound = true; - break; - } - } - assertTrue(sleuthPolicyFound); - } - - @Test - public void processWhenDisableTracingKey() { - SleuthHttpPolicy sleuthHttpPolicy = spy(new SleuthHttpPolicy(tracer)); - when(httpPipelineCallContext.getData(com.azure.core.util.tracing.Tracer.DISABLE_TRACING_KEY)) - .thenReturn(Optional.of(true)); - sleuthHttpPolicy.process(httpPipelineCallContext, httpPipelineNextPolicy); - verify(httpPipelineCallContext, times(1)) - .getData(com.azure.core.util.tracing.Tracer.DISABLE_TRACING_KEY); - verify(httpPipelineCallContext, times(0)) - .getData(com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY); - } - - @Test - public void processAndSetParent() throws MalformedURLException { - SleuthHttpPolicy sleuthHttpPolicy = spy(new SleuthHttpPolicy(tracer)); - Span parentSpan = mock(Span.class); - Span.Builder spanBuilder = mock(Span.Builder.class); - HttpRequest request = mock(HttpRequest.class); - commonProcess(parentSpan, spanBuilder, request); - - Span span = mock(Span.class); - when(spanBuilder.start()).thenReturn(span); - when(span.isNoop()).thenReturn(true); - - when(httpPipelineNextPolicy.process()).thenReturn(Mono.just(successResponse)); - sleuthHttpPolicy.process(httpPipelineCallContext, httpPipelineNextPolicy); - verify(spanBuilder, times(1)).setParent(any()); - verify(spanBuilder, times(1)).kind(Span.Kind.CLIENT); - } - - @Test - public void processAndPutTag() throws MalformedURLException { - SleuthHttpPolicy sleuthHttpPolicy = spy(new SleuthHttpPolicy(tracer)); - Span parentSpan = mock(Span.class); - Span.Builder spanBuilder = mock(Span.Builder.class); - HttpRequest request = mock(HttpRequest.class); - commonProcess(parentSpan, spanBuilder, request); - - Span span = mock(Span.class); - when(spanBuilder.start()).thenReturn(span); - - when(httpPipelineNextPolicy.process()).thenReturn(Mono.just(successResponse)); - - setSpanHeaders(request); - - sleuthHttpPolicy.process(httpPipelineCallContext, httpPipelineNextPolicy); - verify(span, times(3)).tag(any(), any()); - } - - private void setSpanHeaders(HttpRequest request) { - HttpHeaders headers = new HttpHeaders(); - headers.add("User-Agent", "test"); - headers.add("x-ms-request-id", "test-request-id"); - when(request.getHeaders()).thenReturn(headers); - when(request.getHttpMethod()).thenReturn(HttpMethod.POST); - } - - @Test - public void processAndHandleResponse() throws MalformedURLException { - SleuthHttpPolicy sleuthHttpPolicy = spy(new SleuthHttpPolicy(tracer)); - Span parentSpan = mock(Span.class); - Span.Builder spanBuilder = mock(Span.Builder.class); - HttpRequest request = mock(HttpRequest.class); - commonProcess(parentSpan, spanBuilder, request); - - Span span = mock(Span.class); - when(spanBuilder.start()).thenReturn(span); - - setSpanHeaders(request); - when(httpPipelineNextPolicy.process()).thenReturn(Mono.just(successResponse)); - when(successResponse.getHeaderValue("x-ms-request-id")).thenReturn("test-request-id"); - - sleuthHttpPolicy.process(httpPipelineCallContext, httpPipelineNextPolicy).block(); - verify(span, times(1)).end(); - verify(span, times(1)).tag("x-ms-request-id", "test-request-id"); - verify(span, times(1)).tag("http.status_code", "200"); - } - - private void commonProcess(Span parentSpan, Span.Builder spanBuilder, HttpRequest request) throws MalformedURLException { - when(tracer.currentSpan()).thenReturn(parentSpan); - when(tracer.spanBuilder()).thenReturn(spanBuilder); - when(httpPipelineCallContext.getHttpRequest()).thenReturn(request); - when(request.getUrl()).thenReturn(new URL("https://test.blob.core.windows.net/")); - when(spanBuilder.name(anyString())).thenReturn(spanBuilder); - } - - @Test - public void addAfterPolicyForHttpPipeline() { - final HttpPipeline pipeline = createHttpPipeline(); - assertEquals(1, pipeline.getPolicyCount()); - assertEquals(SleuthHttpPolicy.class, pipeline.getPolicy(0).getClass()); - } - - private HttpPipeline createHttpPipeline() { - final HttpClient httpClient = HttpClient.createDefault(); - final List policies = new ArrayList<>(); - policies.add(new SleuthHttpPolicy(tracer)); - final HttpPipeline httpPipeline = new HttpPipelineBuilder() - .httpClient(httpClient) - .policies(policies.toArray(new HttpPipelinePolicy[0])) - .build(); - return httpPipeline; - } -} diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpTraceUtilTests.java b/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpTraceUtilTests.java deleted file mode 100644 index fa2229350892..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/java/com/azure/spring/cloud/trace/sleuth/implementation/HttpTraceUtilTests.java +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.spring.cloud.trace.sleuth.implementation; - -import org.junit.jupiter.api.Test; -import org.springframework.cloud.sleuth.Span; - -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -class HttpTraceUtilTests { - - @Test - void setSpanStatusWithException() { - Span span = mock(Span.class); - Throwable exception = new IllegalArgumentException(); - HttpTraceUtil.setSpanStatus(span, 500, exception); - verify(span, times(1)).error(exception); - } - - @Test - void setSpanStatusWithNormalStatusCode() { - Span span = mock(Span.class); - assertSetSpanStatus(span, 200, 0); - assertSetSpanStatus(span, 204, 0); - assertSetSpanStatus(span, 308, 0); - } - - private void assertSetSpanStatus(Span span, int statusCode, int invocations) { - HttpStatus status = HttpStatus.resolve(statusCode); - HttpTraceUtil.setSpanStatus(span, statusCode, null); - assertNotNull(status); - verify(span, times(invocations)).tag("http.status_message", status.getReasonPhrase()); - } - - @Test - void setSpanStatusUsesTagMethodWhenStatusAbnormal() { - assertSetSpanStatus(mock(Span.class), 401, 1); - } -} diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker deleted file mode 100644 index ca6ee9cea8ec..000000000000 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +++ /dev/null @@ -1 +0,0 @@ -mock-maker-inline \ No newline at end of file diff --git a/sdk/spring/spring-integration-azure-core/CHANGELOG.md b/sdk/spring/spring-integration-azure-core/CHANGELOG.md index 4d5324a996d4..91f8eb3c9943 100644 --- a/sdk/spring/spring-integration-azure-core/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-core/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-integration-azure-core/pom.xml b/sdk/spring/spring-integration-azure-core/pom.xml index 68770a6496b9..cccc8834da4e 100644 --- a/sdk/spring/spring-integration-azure-core/pom.xml +++ b/sdk/spring/spring-integration-azure-core/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-integration-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Integration Azure Core Spring Integration Azure Core @@ -32,21 +32,21 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - - true + + + true - com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework.integration spring-integration-core - 5.5.20 + 6.3.0 + 5.11.0 test @@ -69,37 +69,100 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.springframework spring-test - 5.3.32 + 6.1.8 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.assertj assertj-core - 3.22.0 + 3.25.3 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -108,7 +171,7 @@ - org.springframework.integration:spring-integration-core:[5.5.20] + org.springframework.integration:spring-integration-core:[6.3.0] @@ -117,7 +180,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/handler/DefaultMessageHandler.java b/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/handler/DefaultMessageHandler.java index bc9f451d31fd..93b818e91b55 100644 --- a/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/handler/DefaultMessageHandler.java +++ b/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/handler/DefaultMessageHandler.java @@ -48,6 +48,8 @@ public class DefaultMessageHandler extends AbstractMessageProducingHandler { private final String destination; private final SendOperation sendOperation; private boolean sync = false; + + @SuppressWarnings("deprecation") private ListenableFutureCallback sendCallback; private EvaluationContext evaluationContext; private Expression sendTimeoutExpression = new ValueExpression<>(DEFAULT_SEND_TIMEOUT); @@ -248,6 +250,7 @@ private Map buildPropertiesMap() { * * @param callback the call back */ + @SuppressWarnings("deprecation") public void setSendCallback(ListenableFutureCallback callback) { this.sendCallback = callback; } diff --git a/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/implementation/instrumentation/InstrumentationSendCallback.java b/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/implementation/instrumentation/InstrumentationSendCallback.java index 51ca56c55d12..02a56b11ee21 100644 --- a/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/implementation/instrumentation/InstrumentationSendCallback.java +++ b/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/implementation/instrumentation/InstrumentationSendCallback.java @@ -10,6 +10,7 @@ /** * */ +@SuppressWarnings("deprecation") public class InstrumentationSendCallback implements ListenableFutureCallback { private final InstrumentationManager instrumentationManager; diff --git a/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/instrumentation/Instrumentation.java b/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/instrumentation/Instrumentation.java index d71275cc75a7..3d8ec788e62a 100644 --- a/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/instrumentation/Instrumentation.java +++ b/sdk/spring/spring-integration-azure-core/src/main/java/com/azure/spring/integration/core/instrumentation/Instrumentation.java @@ -39,6 +39,7 @@ enum Type { Type getType(); /** + * Return the exception. * @return the exception. */ Throwable getException(); diff --git a/sdk/spring/spring-integration-azure-core/src/test/java/com/azure/spring/integration/core/handler/DefaultMessageHandlerTests.java b/sdk/spring/spring-integration-azure-core/src/test/java/com/azure/spring/integration/core/handler/DefaultMessageHandlerTests.java index 41bba67e8207..67ad2fe245da 100644 --- a/sdk/spring/spring-integration-azure-core/src/test/java/com/azure/spring/integration/core/handler/DefaultMessageHandlerTests.java +++ b/sdk/spring/spring-integration-azure-core/src/test/java/com/azure/spring/integration/core/handler/DefaultMessageHandlerTests.java @@ -70,6 +70,7 @@ public void testSend() { } @Test + @SuppressWarnings("deprecation") public void testSendCallback() { ListenableFutureCallback callbackSpy = spy(new ListenableFutureCallback() { @Override diff --git a/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md b/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md index 87056a4f02ff..80a99badc572 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-integration-azure-eventhubs/pom.xml b/sdk/spring/spring-integration-azure-eventhubs/pom.xml index 64d7d6614422..5afe7fb1915b 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/pom.xml +++ b/sdk/spring/spring-integration-azure-eventhubs/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-integration-azure-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Integration Azure Event Hubs Spring Integration Azure Event Hubs @@ -32,24 +32,27 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-integration-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-integration-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 test-jar test com.azure.spring spring-messaging-azure-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 @@ -70,7 +73,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -78,41 +81,104 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.springframework spring-test - 5.3.32 + 6.1.8 test org.assertj assertj-core - 3.22.0 + 3.25.3 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-integration-azure-eventhubs/src/main/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapter.java b/sdk/spring/spring-integration-azure-eventhubs/src/main/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapter.java index 39b9e1047f92..b6b776f0905e 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/src/main/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapter.java +++ b/sdk/spring/spring-integration-azure-eventhubs/src/main/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapter.java @@ -15,7 +15,7 @@ import com.azure.spring.integration.eventhubs.implementation.health.EventHubsProcessorInstrumentation; import com.azure.spring.messaging.AzureHeaders; import com.azure.spring.messaging.ListenerMode; -import com.azure.spring.messaging.checkpoint.AzureCheckpointer; +import com.azure.spring.messaging.implementation.checkpoint.AzureCheckpointer; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode; import com.azure.spring.messaging.checkpoint.Checkpointer; diff --git a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java index af4abf4e1dfb..ef6dcc33b0ea 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-eventhubs/src/test/java/com/azure/spring/integration/eventhubs/inbound/EventHubsInboundChannelAdapterTests.java @@ -17,15 +17,15 @@ import com.azure.spring.integration.core.instrumentation.Instrumentation; import com.azure.spring.integration.eventhubs.implementation.health.EventHubsProcessorInstrumentation; import com.azure.spring.messaging.ListenerMode; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.eventhubs.core.EventHubsProcessorFactory; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig; import com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode; import com.azure.spring.messaging.eventhubs.core.listener.EventHubsMessageListenerContainer; import com.azure.spring.messaging.eventhubs.core.properties.EventHubsContainerProperties; import com.azure.spring.messaging.eventhubs.implementation.core.listener.adapter.BatchMessagingMessageListenerAdapter; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsBatchMessageConverter; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsBatchMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsMessageConverter; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -116,7 +116,7 @@ void setInstrumentationId() { @Test void setMessageConverter() { - AbstractAzureMessageConverter converter = mock(EventHubsMessageConverter.class); + AzureMessageConverter converter = mock(EventHubsMessageConverter.class); this.adapter.setMessageConverter(converter); assertThat(this.adapter).extracting("recordListener").extracting("messageConverter").isEqualTo(converter); assertThat(this.adapter).extracting("batchListener").extracting("messageConverter").isNotEqualTo(converter); @@ -124,7 +124,7 @@ void setMessageConverter() { @Test void setBatchMessageConverter() { - AbstractAzureMessageConverter converter = mock(EventHubsBatchMessageConverter.class); + AzureMessageConverter converter = mock(EventHubsBatchMessageConverter.class); this.adapter.setBatchMessageConverter(converter); assertThat(this.adapter).extracting("batchListener").extracting("messageConverter").isEqualTo(converter); assertThat(this.adapter).extracting("recordListener").extracting("messageConverter").isNotEqualTo(converter); diff --git a/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md b/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md index 4d5324a996d4..91f8eb3c9943 100644 --- a/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-integration-azure-servicebus/pom.xml b/sdk/spring/spring-integration-azure-servicebus/pom.xml index 6f1dfd937280..f33364467146 100644 --- a/sdk/spring/spring-integration-azure-servicebus/pom.xml +++ b/sdk/spring/spring-integration-azure-servicebus/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-integration-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Integration Azure Service Bus Spring Integration Azure Service Bus @@ -32,29 +32,32 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-integration-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-integration-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 test-jar test com.azure.spring spring-messaging-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-messaging-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 test-jar test @@ -76,7 +79,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -84,41 +87,104 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework spring-test - 5.3.32 + 6.1.8 test org.assertj assertj-core - 3.22.0 + 3.25.3 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-integration-azure-servicebus/src/main/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapter.java b/sdk/spring/spring-integration-azure-servicebus/src/main/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapter.java index 63c9bc6decec..b803c45518f8 100644 --- a/sdk/spring/spring-integration-azure-servicebus/src/main/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapter.java +++ b/sdk/spring/spring-integration-azure-servicebus/src/main/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapter.java @@ -13,7 +13,7 @@ import com.azure.spring.integration.servicebus.implementation.health.ServiceBusProcessorInstrumentation; import com.azure.spring.messaging.AzureHeaders; import com.azure.spring.messaging.ListenerMode; -import com.azure.spring.messaging.checkpoint.AzureCheckpointer; +import com.azure.spring.messaging.implementation.checkpoint.AzureCheckpointer; import com.azure.spring.messaging.checkpoint.Checkpointer; import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.servicebus.core.listener.ServiceBusMessageListenerContainer; diff --git a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java index 626431278280..2c2f9a31f3bf 100644 --- a/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java +++ b/sdk/spring/spring-integration-azure-servicebus/src/test/java/com/azure/spring/integration/servicebus/inbound/ServiceBusInboundChannelAdapterTests.java @@ -16,11 +16,11 @@ import com.azure.spring.integration.core.instrumentation.Instrumentation; import com.azure.spring.integration.servicebus.implementation.health.ServiceBusProcessorInstrumentation; import com.azure.spring.messaging.ListenerMode; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.servicebus.core.ServiceBusProcessorFactory; import com.azure.spring.messaging.servicebus.core.listener.ServiceBusMessageListenerContainer; import com.azure.spring.messaging.servicebus.core.properties.ServiceBusContainerProperties; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -103,7 +103,7 @@ void setInstrumentationId() { @Test void setMessageConverter() { - AbstractAzureMessageConverter converter = mock(ServiceBusMessageConverter.class); + AzureMessageConverter converter = mock(ServiceBusMessageConverter.class); this.adapter.setMessageConverter(converter); assertThat(this.adapter).extracting("recordListener").extracting("messageConverter").isEqualTo(converter); } diff --git a/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md b/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md index 4d5324a996d4..91f8eb3c9943 100644 --- a/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-integration-azure-storage-queue/pom.xml b/sdk/spring/spring-integration-azure-storage-queue/pom.xml index 5da003857d38..315594cb6980 100644 --- a/sdk/spring/spring-integration-azure-storage-queue/pom.xml +++ b/sdk/spring/spring-integration-azure-storage-queue/pom.xml @@ -13,7 +13,7 @@ com.azure.spring spring-integration-azure-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Integration Azure Storage Queue Spring Integration Azure Storage Queue @@ -33,17 +33,20 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-integration-azure-core - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-messaging-azure-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 + 5.11.0 test @@ -67,29 +70,92 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md b/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md index 87056a4f02ff..80a99badc572 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-messaging-azure-eventhubs/pom.xml b/sdk/spring/spring-messaging-azure-eventhubs/pom.xml index f39fd09841b3..31fccbc1c7ff 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/pom.xml +++ b/sdk/spring/spring-messaging-azure-eventhubs/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-messaging-azure-eventhubs - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Messaging Azure Event Hubs Spring Messaging Azure Event Hubs @@ -32,17 +32,20 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 test-jar test @@ -62,19 +65,19 @@ org.springframework spring-tx - 5.3.32 + 6.1.8 true org.springframework.retry spring-retry - 1.3.4 + 2.0.6 true org.springframework.data spring-data-commons - 2.7.18 + 3.3.0 org.slf4j @@ -86,7 +89,7 @@ io.micrometer micrometer-core - 1.9.17 + 1.13.0 true @@ -100,13 +103,13 @@ org.springframework spring-test - 5.3.32 + 6.1.8 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -114,30 +117,93 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -146,11 +212,10 @@ - org.springframework:spring-messaging:[5.3.32] - org.springframework:spring-tx:[5.3.32] - org.springframework.retry:spring-retry:[1.3.4] - org.springframework.data:spring-data-commons:[2.7.18] - io.micrometer:micrometer-core:[1.9.17] + io.micrometer:micrometer-core:[1.13.0] + org.springframework:spring-tx:[6.1.8] + org.springframework.retry:spring-retry:[2.0.6] + org.springframework.data:spring-data-commons:[3.3.0] @@ -159,7 +224,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/EventHubsTemplate.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/EventHubsTemplate.java index 7a4d26f92749..480d80952b14 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/EventHubsTemplate.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/EventHubsTemplate.java @@ -8,7 +8,8 @@ import com.azure.messaging.eventhubs.EventDataBatch; import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; import com.azure.messaging.eventhubs.models.CreateBatchOptions; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsMessageConverter; +import com.azure.spring.messaging.converter.AzureMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsMessageConverter; import com.azure.spring.messaging.core.SendOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,7 +35,7 @@ public class EventHubsTemplate implements SendOperation { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubsTemplate.class); private final EventHubsProducerFactory producerFactory; - private EventHubsMessageConverter messageConverter = new EventHubsMessageConverter(); + private AzureMessageConverter messageConverter = new EventHubsMessageConverter(); /** * Create an instance using the supplied producer factory. @@ -163,10 +164,10 @@ PartitionSupplier buildPartitionSupplier(Message message) { } /** - * Set the message converter. + * Set the message converter to use. * @param messageConverter the message converter. */ - public void setMessageConverter(EventHubsMessageConverter messageConverter) { + public void setMessageConverter(AzureMessageConverter messageConverter) { this.messageConverter = messageConverter; } diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/PartitionSupplier.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/PartitionSupplier.java index 60efdb0eff96..c818d0dc5c00 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/PartitionSupplier.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/PartitionSupplier.java @@ -9,6 +9,13 @@ * */ public class PartitionSupplier { + + /** + * Create an instance of {@link PartitionSupplier}. + */ + public PartitionSupplier() { + } + private String partitionKey; private String partitionId; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/CommonProperties.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/CommonProperties.java index 408cd3c58921..a2b73cf7b47f 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/CommonProperties.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/CommonProperties.java @@ -13,6 +13,11 @@ */ public abstract class CommonProperties extends AzureAmqpSdkProperties implements EventHubClientCommonProperties, ConnectionStringProvider { + /** + * Create an instance of {@link CommonProperties}. + */ + public CommonProperties() { + } private String domainName; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ConsumerProperties.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ConsumerProperties.java index 03c2a554df75..c707c9c94193 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ConsumerProperties.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ConsumerProperties.java @@ -10,6 +10,12 @@ */ public class ConsumerProperties extends CommonProperties implements EventHubConsumerProperties { + /** + * Create an instance of {@link ConsumerProperties} + */ + public ConsumerProperties() { + } + private String consumerGroup; private Integer prefetchCount; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/EventHubsContainerProperties.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/EventHubsContainerProperties.java index 99176038d051..8c25b1a772ec 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/EventHubsContainerProperties.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/EventHubsContainerProperties.java @@ -16,6 +16,12 @@ */ public class EventHubsContainerProperties extends ProcessorProperties { + /** + * Creates an instance of {@link EventHubsContainerProperties}. + */ + public EventHubsContainerProperties() { + } + private MessageListener messageListener; private EventHubsErrorHandler errorHandler; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProcessorProperties.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProcessorProperties.java index 5b52beeb10f8..cff8d796e42c 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProcessorProperties.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProcessorProperties.java @@ -16,6 +16,12 @@ */ public class ProcessorProperties extends ConsumerProperties implements EventProcessorClientProperties { + /** + * Create an instance of {@link ProcessorProperties}. + */ + public ProcessorProperties() { + } + private final Map initialPartitionEventPosition = new HashMap<>(); private final LoadBalancingProperties loadBalancing = new LoadBalancingProperties(); private final EventBatchProperties batch = new EventBatchProperties(); diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProducerProperties.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProducerProperties.java index f9ebd0879120..80304ed00182 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProducerProperties.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/core/properties/ProducerProperties.java @@ -10,4 +10,9 @@ */ public class ProducerProperties extends CommonProperties implements EventHubProducerProperties { + /** + * Create an instance of {@link ProducerProperties}. + */ + public ProducerProperties() { + } } diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/SpringMessagingAzureEventHubsRuntimeHints.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/SpringMessagingAzureEventHubsRuntimeHints.java new file mode 100644 index 000000000000..5677633a86b3 --- /dev/null +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/SpringMessagingAzureEventHubsRuntimeHints.java @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.messaging.eventhubs.implementation; + +import org.springframework.aot.hint.MemberCategory; +import org.springframework.aot.hint.ReflectionHints; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; + +import java.util.stream.Stream; + +class SpringMessagingAzureEventHubsRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + ReflectionHints reflectionHints = hints.reflection(); + Stream.of( + "com.azure.spring.messaging.eventhubs.core.properties.CommonProperties", + "com.azure.spring.messaging.eventhubs.core.properties.ConsumerProperties", + "com.azure.spring.messaging.eventhubs.core.properties.EventHubsContainerProperties", + "com.azure.spring.messaging.eventhubs.core.properties.NamespaceProperties", + "com.azure.spring.messaging.eventhubs.core.properties.ProcessorProperties", + "com.azure.spring.messaging.eventhubs.core.properties.ProducerProperties" + ) + .forEach(typeName -> reflectionHints.registerTypeIfPresent(classLoader, typeName, + builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS))); + } + +} diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/config/MethodEventHubsListenerEndpoint.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/config/MethodEventHubsListenerEndpoint.java index 46cb608c90b2..83adc1d605cd 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/config/MethodEventHubsListenerEndpoint.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/config/MethodEventHubsListenerEndpoint.java @@ -5,8 +5,8 @@ import com.azure.spring.messaging.eventhubs.implementation.core.listener.adapter.BatchMessagingMessageListenerAdapter; import com.azure.spring.messaging.eventhubs.implementation.core.listener.adapter.RecordMessagingMessageListenerAdapter; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsBatchMessageConverter; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsBatchMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsMessageConverter; import com.azure.spring.messaging.implementation.config.AzureListenerEndpoint; import com.azure.spring.messaging.implementation.config.MethodAzureListenerEndpoint; import com.azure.spring.messaging.converter.AzureMessageConverter; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/BatchMessagingMessageListenerAdapter.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/BatchMessagingMessageListenerAdapter.java index 5e2732b8578d..5be11f2e2c53 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/BatchMessagingMessageListenerAdapter.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/BatchMessagingMessageListenerAdapter.java @@ -8,9 +8,9 @@ import com.azure.messaging.eventhubs.models.PartitionContext; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsBatchMessageListener; import com.azure.spring.messaging.AzureHeaders; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.eventhubs.support.EventHubsHeaders; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsBatchMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsBatchMessageConverter; import com.azure.spring.messaging.implementation.listener.adapter.MessagingMessageListenerAdapter; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; @@ -47,8 +47,7 @@ public void onMessage(EventBatchContext eventBatchContext) { } @Override - @SuppressWarnings("unchecked") - public AbstractAzureMessageConverter getMessageConverter() { - return (AbstractAzureMessageConverter) super.getMessageConverter(); + public AzureMessageConverter getMessageConverter() { + return (AzureMessageConverter) super.getMessageConverter(); } } diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java index 7be7b95e2071..81fe37054063 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java @@ -8,9 +8,9 @@ import com.azure.messaging.eventhubs.models.PartitionContext; import com.azure.spring.cloud.service.eventhubs.consumer.EventHubsRecordMessageListener; import com.azure.spring.messaging.AzureHeaders; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.eventhubs.support.EventHubsHeaders; -import com.azure.spring.messaging.eventhubs.support.converter.EventHubsMessageConverter; +import com.azure.spring.messaging.eventhubs.implementation.support.converter.EventHubsMessageConverter; import com.azure.spring.messaging.implementation.listener.adapter.MessagingMessageListenerAdapter; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; @@ -48,9 +48,8 @@ public void onMessage(EventContext eventContext) { } @Override - @SuppressWarnings("unchecked") - public AbstractAzureMessageConverter getMessageConverter() { - return (AbstractAzureMessageConverter) super.getMessageConverter(); + public AzureMessageConverter getMessageConverter() { + return (AzureMessageConverter) super.getMessageConverter(); } } diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsBatchMessageConverter.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsBatchMessageConverter.java similarity index 94% rename from sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsBatchMessageConverter.java rename to sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsBatchMessageConverter.java index a52a1a50e241..a9eb575af36f 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsBatchMessageConverter.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsBatchMessageConverter.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.eventhubs.support.converter; +package com.azure.spring.messaging.eventhubs.implementation.support.converter; import com.azure.messaging.eventhubs.EventData; import com.azure.messaging.eventhubs.models.EventBatchContext; import com.azure.spring.messaging.AzureHeaders; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.implementation.converter.AbstractJacksonAzureMessageConverter; import com.azure.spring.messaging.eventhubs.support.EventHubsHeaders; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.messaging.Message; @@ -25,7 +25,7 @@ * A converter to turn a {@link com.azure.messaging.eventhubs.models.EventBatchContext} to * {@link Message} and vice versa. */ -public class EventHubsBatchMessageConverter extends AbstractAzureMessageConverter { +public class EventHubsBatchMessageConverter extends AbstractJacksonAzureMessageConverter { private final ObjectMapper objectMapper; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsMessageConverter.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsMessageConverter.java similarity index 93% rename from sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsMessageConverter.java rename to sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsMessageConverter.java index 66779c8d6a9b..3068ee32eb0d 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsMessageConverter.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsMessageConverter.java @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.eventhubs.support.converter; +package com.azure.spring.messaging.eventhubs.implementation.support.converter; import com.azure.messaging.eventhubs.EventData; import com.azure.spring.messaging.AzureHeaders; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.implementation.converter.AbstractJacksonAzureMessageConverter; import com.azure.spring.messaging.eventhubs.support.EventHubsHeaders; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -27,7 +27,7 @@ * A converter to turn a {@link Message} to {@link EventData} and vice versa. * */ -public class EventHubsMessageConverter extends AbstractAzureMessageConverter { +public class EventHubsMessageConverter extends AbstractJacksonAzureMessageConverter { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubsMessageConverter.class); diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/package-info.java b/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/package-info.java deleted file mode 100644 index efed3e8b623f..000000000000 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/main/java/com/azure/spring/messaging/eventhubs/support/converter/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Messaging Event Hubs converter class. - */ -package com.azure.spring.messaging.eventhubs.support.converter; diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/main/resources/META-INF/spring/aot.factories b/sdk/spring/spring-messaging-azure-eventhubs/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 000000000000..28e12d6ad42c --- /dev/null +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,2 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar= \ +com.azure.spring.messaging.eventhubs.implementation.SpringMessagingAzureEventHubsRuntimeHints diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsBatchMessageConverterTests.java b/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsBatchMessageConverterTests.java similarity index 98% rename from sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsBatchMessageConverterTests.java rename to sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsBatchMessageConverterTests.java index c4bb4c0542c2..328ed5f858f8 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsBatchMessageConverterTests.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsBatchMessageConverterTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.eventhubs.support.converter; +package com.azure.spring.messaging.eventhubs.implementation.support.converter; import com.azure.messaging.eventhubs.CheckpointStore; import com.azure.messaging.eventhubs.EventData; @@ -56,7 +56,7 @@ public class EventHubsBatchMessageConverterTests { @BeforeEach void beforeEach() { - MockitoAnnotations.initMocks(this); + MockitoAnnotations.openMocks(this); } @Test diff --git a/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsMessageConverterTests.java b/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsMessageConverterTests.java similarity index 98% rename from sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsMessageConverterTests.java rename to sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsMessageConverterTests.java index de4008f03f23..97fc1f78a3d5 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/support/converter/EventHubsMessageConverterTests.java +++ b/sdk/spring/spring-messaging-azure-eventhubs/src/test/java/com/azure/spring/messaging/eventhubs/implementation/support/converter/EventHubsMessageConverterTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.eventhubs.support.converter; +package com.azure.spring.messaging.eventhubs.implementation.support.converter; import com.azure.messaging.eventhubs.EventData; import com.azure.spring.messaging.eventhubs.support.EventHubsHeaders; diff --git a/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md b/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md index 87056a4f02ff..80a99badc572 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-messaging-azure-servicebus/pom.xml b/sdk/spring/spring-messaging-azure-servicebus/pom.xml index 61f83356432c..156220b29a57 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/pom.xml +++ b/sdk/spring/spring-messaging-azure-servicebus/pom.xml @@ -13,7 +13,7 @@ com.azure.spring spring-messaging-azure-servicebus - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Messaging Azure Service Bus Spring Messaging Azure Service Bus @@ -33,17 +33,20 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 test-jar test @@ -52,27 +55,22 @@ azure-messaging-servicebus 7.17.0 - - com.azure - azure-core - 1.49.1 - org.springframework spring-tx - 5.3.32 + 6.1.8 true org.springframework.retry spring-retry - 1.3.4 + 2.0.6 true org.springframework.data spring-data-commons - 2.7.18 + 3.3.0 org.slf4j @@ -84,13 +82,13 @@ io.micrometer micrometer-core - 1.9.17 + 1.13.0 true org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,19 +96,19 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test @@ -128,6 +126,69 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -136,11 +197,10 @@ - org.springframework:spring-messaging:[5.3.32] - org.springframework:spring-tx:[5.3.32] - org.springframework.retry:spring-retry:[1.3.4] - org.springframework.data:spring-data-commons:[2.7.18] - io.micrometer:micrometer-core:[1.9.17] + io.micrometer:micrometer-core:[1.13.0] + org.springframework:spring-tx:[6.1.8] + org.springframework.retry:spring-retry:[2.0.6] + org.springframework.data:spring-data-commons:[3.3.0] @@ -149,7 +209,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/ServiceBusTemplate.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/ServiceBusTemplate.java index 998df5cbb6d3..518146082de2 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/ServiceBusTemplate.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/ServiceBusTemplate.java @@ -4,12 +4,14 @@ package com.azure.spring.messaging.servicebus.core; import com.azure.messaging.servicebus.ServiceBusMessage; +import com.azure.messaging.servicebus.ServiceBusReceivedMessage; import com.azure.messaging.servicebus.ServiceBusSenderAsyncClient; import com.azure.spring.messaging.PropertiesSupplier; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.core.SendOperation; import com.azure.spring.cloud.service.servicebus.properties.ServiceBusEntityType; import com.azure.spring.messaging.servicebus.core.properties.NamespaceProperties; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.springframework.lang.NonNull; import org.springframework.messaging.Message; import org.springframework.util.Assert; @@ -27,7 +29,7 @@ public class ServiceBusTemplate implements SendOperation { private static final ServiceBusMessageConverter DEFAULT_CONVERTER = new ServiceBusMessageConverter(); private final ServiceBusProducerFactory producerFactory; - private ServiceBusMessageConverter messageConverter = DEFAULT_CONVERTER; + private AzureMessageConverter messageConverter = DEFAULT_CONVERTER; private ServiceBusEntityType defaultEntityType; /** @@ -48,10 +50,10 @@ public Mono sendAsync(String destination, Message message) { } /** - * Set the message converter. + * Set the message converter to use. * @param messageConverter the message converter. */ - public void setMessageConverter(ServiceBusMessageConverter messageConverter) { + public void setMessageConverter(AzureMessageConverter messageConverter) { this.messageConverter = messageConverter; } @@ -59,7 +61,7 @@ public void setMessageConverter(ServiceBusMessageConverter messageConverter) { * Get the message converter. * @return the message converter. */ - public ServiceBusMessageConverter getMessageConverter() { + public AzureMessageConverter getMessageConverter() { return messageConverter; } diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/CommonProperties.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/CommonProperties.java index f1b9c4940dec..3284d92a0de2 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/CommonProperties.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/CommonProperties.java @@ -13,6 +13,12 @@ */ public class CommonProperties extends AzureAmqpSdkProperties implements ServiceBusClientCommonProperties { + /** + * Create an instance of {@link CommonProperties}. + */ + public CommonProperties() { + } + private String domainName; /** diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ConsumerProperties.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ConsumerProperties.java index 5cdadcc343d2..479e590d6b75 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ConsumerProperties.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ConsumerProperties.java @@ -14,6 +14,12 @@ */ public class ConsumerProperties extends CommonProperties implements ServiceBusReceiverClientProperties { + /** + * Create an instance of {@link ConsumerProperties}. + */ + public ConsumerProperties() { + } + private Boolean sessionEnabled; private Boolean autoComplete; private Integer prefetchCount; diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProcessorProperties.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProcessorProperties.java index a0f8f899fa3f..c7d472e6cdf8 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProcessorProperties.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProcessorProperties.java @@ -10,6 +10,12 @@ */ public class ProcessorProperties extends ConsumerProperties implements ServiceBusProcessorClientProperties { + /** + * Create an instance of {@link ProcessorProperties}. + */ + public ProcessorProperties() { + } + private Integer maxConcurrentCalls; private Integer maxConcurrentSessions; diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProducerProperties.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProducerProperties.java index bd3d2cd52f68..56c1904b8962 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProducerProperties.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ProducerProperties.java @@ -10,4 +10,9 @@ */ public class ProducerProperties extends CommonProperties implements ServiceBusSenderClientProperties { + /** + * Create an instance of {@link ProducerProperties}. + */ + public ProducerProperties() { + } } diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ServiceBusContainerProperties.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ServiceBusContainerProperties.java index 8856bf1bde24..32de28a03532 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ServiceBusContainerProperties.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/core/properties/ServiceBusContainerProperties.java @@ -11,6 +11,12 @@ */ public class ServiceBusContainerProperties extends ProcessorProperties { + /** + * Creates an instance of {@link ServiceBusContainerProperties}. + */ + public ServiceBusContainerProperties() { + } + private MessageListener messageListener; private ServiceBusErrorHandler errorHandler; diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/SpringMessagingAzureServiceBusRuntimeHints.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/SpringMessagingAzureServiceBusRuntimeHints.java new file mode 100644 index 000000000000..b1dd3b7b9ce2 --- /dev/null +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/SpringMessagingAzureServiceBusRuntimeHints.java @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.spring.messaging.servicebus.implementation; + +import org.springframework.aot.hint.MemberCategory; +import org.springframework.aot.hint.ReflectionHints; +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; + +import java.util.stream.Stream; + +class SpringMessagingAzureServiceBusRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(RuntimeHints hints, ClassLoader classLoader) { + ReflectionHints reflectionHints = hints.reflection(); + Stream.of( + "com.azure.spring.messaging.servicebus.core.properties.CommonProperties", + "com.azure.spring.messaging.servicebus.core.properties.ConsumerProperties", + "com.azure.spring.messaging.servicebus.core.properties.NamespaceProperties", + "com.azure.spring.messaging.servicebus.core.properties.ProcessorProperties", + "com.azure.spring.messaging.servicebus.core.properties.ProducerProperties", + "com.azure.spring.messaging.servicebus.core.properties.ServiceBusContainerProperties" + ) + .forEach(typeName -> reflectionHints.registerTypeIfPresent(classLoader, typeName, + builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS))); + } + +} diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/config/MethodServiceBusListenerEndpoint.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/config/MethodServiceBusListenerEndpoint.java index 18806c376c97..5f7a4cf07257 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/config/MethodServiceBusListenerEndpoint.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/config/MethodServiceBusListenerEndpoint.java @@ -10,7 +10,7 @@ import com.azure.spring.messaging.listener.MessageListenerContainer; import com.azure.spring.messaging.implementation.listener.adapter.MessagingMessageListenerAdapter; import com.azure.spring.messaging.servicebus.implementation.core.listener.adapter.RecordMessagingMessageListenerAdapter; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.beans.factory.config.EmbeddedValueResolver; diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java index fd441176e67a..386597048392 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/core/listener/adapter/RecordMessagingMessageListenerAdapter.java @@ -6,11 +6,11 @@ import com.azure.messaging.servicebus.ServiceBusMessage; import com.azure.messaging.servicebus.ServiceBusReceivedMessage; import com.azure.messaging.servicebus.ServiceBusReceivedMessageContext; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.implementation.listener.adapter.MessagingMessageListenerAdapter; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusRecordMessageListener; import com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders; -import com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter; +import com.azure.spring.messaging.servicebus.implementation.support.converter.ServiceBusMessageConverter; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; @@ -41,8 +41,7 @@ public void onMessage(ServiceBusReceivedMessageContext messageContext) { } @Override - @SuppressWarnings("unchecked") - public AbstractAzureMessageConverter getMessageConverter() { - return (AbstractAzureMessageConverter) super.getMessageConverter(); + public AzureMessageConverter getMessageConverter() { + return (AzureMessageConverter) super.getMessageConverter(); } } diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/support/converter/ServiceBusMessageConverter.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/support/converter/ServiceBusMessageConverter.java similarity index 97% rename from sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/support/converter/ServiceBusMessageConverter.java rename to sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/support/converter/ServiceBusMessageConverter.java index c21ebe5abd8f..411f6fbebff0 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/support/converter/ServiceBusMessageConverter.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/implementation/support/converter/ServiceBusMessageConverter.java @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.servicebus.support.converter; +package com.azure.spring.messaging.servicebus.implementation.support.converter; import com.azure.core.util.BinaryData; import com.azure.messaging.servicebus.ServiceBusMessage; import com.azure.messaging.servicebus.ServiceBusReceivedMessage; import com.azure.spring.cloud.core.implementation.properties.PropertyMapper; import com.azure.spring.messaging.AzureHeaders; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.implementation.converter.AbstractJacksonAzureMessageConverter; import com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; @@ -34,7 +34,7 @@ * */ public class ServiceBusMessageConverter - extends AbstractAzureMessageConverter { + extends AbstractJacksonAzureMessageConverter { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBusMessageConverter.class); private final ObjectMapper objectMapper; diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/support/converter/package-info.java b/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/support/converter/package-info.java deleted file mode 100644 index 5386aa344274..000000000000 --- a/sdk/spring/spring-messaging-azure-servicebus/src/main/java/com/azure/spring/messaging/servicebus/support/converter/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Messaging Service Bus converter class. - */ -package com.azure.spring.messaging.servicebus.support.converter; diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/main/resources/META-INF/spring/aot.factories b/sdk/spring/spring-messaging-azure-servicebus/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 000000000000..7f60419997ef --- /dev/null +++ b/sdk/spring/spring-messaging-azure-servicebus/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,2 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar= \ +com.azure.spring.messaging.servicebus.implementation.SpringMessagingAzureServiceBusRuntimeHints diff --git a/sdk/spring/spring-messaging-azure-servicebus/src/test/java/com/azure/spring/messaging/servicebus/support/converter/ServiceBusMessageConverterTests.java b/sdk/spring/spring-messaging-azure-servicebus/src/test/java/com/azure/spring/messaging/servicebus/implementation/support/converter/ServiceBusMessageConverterTests.java similarity index 95% rename from sdk/spring/spring-messaging-azure-servicebus/src/test/java/com/azure/spring/messaging/servicebus/support/converter/ServiceBusMessageConverterTests.java rename to sdk/spring/spring-messaging-azure-servicebus/src/test/java/com/azure/spring/messaging/servicebus/implementation/support/converter/ServiceBusMessageConverterTests.java index ef6512c5905d..924906f4d2f7 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/src/test/java/com/azure/spring/messaging/servicebus/support/converter/ServiceBusMessageConverterTests.java +++ b/sdk/spring/spring-messaging-azure-servicebus/src/test/java/com/azure/spring/messaging/servicebus/implementation/support/converter/ServiceBusMessageConverterTests.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.servicebus.support.converter; +package com.azure.spring.messaging.servicebus.implementation.support.converter; import com.azure.core.util.BinaryData; import com.azure.messaging.servicebus.ServiceBusMessage; @@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.when; -public class ServiceBusMessageConverterTests { +class ServiceBusMessageConverterTests { private static final String PAYLOAD = "payload"; private static final String APPLICATION_JSON = "application/json"; @@ -77,10 +77,8 @@ public void setup() { public void close() throws Exception { closeable.close(); } - - @Test - public void fromPayloadAsByte() { + void fromPayloadAsByte() { final Message message = MessageBuilder.withPayload(PAYLOAD.getBytes(StandardCharsets.UTF_8)).build(); final ServiceBusMessage serviceBusMessage = this.messageConverter.fromMessage(message, ServiceBusMessage.class); @@ -89,7 +87,7 @@ public void fromPayloadAsByte() { } @Test - public void fromPayloadAsString() { + void fromPayloadAsString() { final Message message = MessageBuilder.withPayload(PAYLOAD).build(); final ServiceBusMessage serviceBusMessage = this.messageConverter.fromMessage(message, ServiceBusMessage.class); @@ -98,7 +96,7 @@ public void fromPayloadAsString() { } @Test - public void fromPayloadAsUserClass() { + void fromPayloadAsUserClass() { final User user = new User(PAYLOAD); final Message message = MessageBuilder.withPayload(user).build(); final ServiceBusMessage serviceBusMessage = this.messageConverter.fromMessage(message, ServiceBusMessage.class); @@ -108,7 +106,7 @@ public void fromPayloadAsUserClass() { } @Test - public void toPayloadAsByte() { + void toPayloadAsByte() { Message message = this.messageConverter.toMessage(receivedMessage, byte[].class); assertNotNull(message); @@ -116,7 +114,7 @@ public void toPayloadAsByte() { } @Test - public void toPayloadAsString() { + void toPayloadAsString() { Message message = this.messageConverter.toMessage(receivedMessage, String.class); assertNotNull(message); @@ -124,7 +122,7 @@ public void toPayloadAsString() { } @Test - public void toPayloadAsUserClass() { + void toPayloadAsUserClass() { final User user = new User(PAYLOAD); when(this.receivedMessage.getBody()).thenReturn(BinaryData.fromObject(user)); @@ -135,7 +133,7 @@ public void toPayloadAsUserClass() { } @Test - public void testScheduledEnqueueTimeHeader() { + void testScheduledEnqueueTimeHeader() { Message springMessage = MessageBuilder.withPayload(PAYLOAD) .build(); ServiceBusMessage servicebusMessage = this.messageConverter.fromMessage(springMessage, ServiceBusMessage.class); @@ -158,7 +156,7 @@ public void testScheduledEnqueueTimeHeader() { } @Test - public void testConvertSpringNativeMessageHeaders() { + void testConvertSpringNativeMessageHeaders() { Message springMessage = MessageBuilder.withPayload(PAYLOAD) .setHeader(MessageHeaders.CONTENT_TYPE, APPLICATION_JSON) .setHeader(MessageHeaders.REPLY_CHANNEL, REPLY_TO) @@ -206,7 +204,7 @@ private void assertServiceBusMessageHeaders(ServiceBusMessage serviceBusMessage) } @Test - public void testServiceBusMessageHeadersSet() { + void testServiceBusMessageHeadersSet() { String customHeader = "custom-header"; String customHeaderValue = "custom-header-value"; @@ -223,7 +221,7 @@ public void testServiceBusMessageHeadersSet() { } @Test - public void testServiceBusHeaderAndSessionIdPriority() { + void testServiceBusHeaderAndSessionIdPriority() { // When session id set, the partition key equals to session id. // If they are different, the original partition key will be overwritten with session id. Message springMessage = springMessageBuilder().setHeader(ServiceBusMessageHeaders.SESSION_ID, SERVICE_BUS_SESSION_ID).build(); @@ -233,7 +231,7 @@ public void testServiceBusHeaderAndSessionIdPriority() { } @Test - public void testAzureHeaderAndServiceBusHeaderAndSessionIdSetSameTime() { + void testAzureHeaderAndServiceBusHeaderAndSessionIdSetSameTime() { Message springMessage = MessageBuilder.withPayload(PAYLOAD) .setHeader(ServiceBusMessageHeaders.PARTITION_KEY, SERVICE_BUS_PARTITION_KEY) @@ -247,7 +245,7 @@ public void testAzureHeaderAndServiceBusHeaderAndSessionIdSetSameTime() { } @Test - public void testAzureHeaderAndServiceBusHeaderPriority() { + void testAzureHeaderAndServiceBusHeaderPriority() { Message springMessage = MessageBuilder.withPayload(PAYLOAD) .setHeader(ServiceBusMessageHeaders.PARTITION_KEY, SERVICE_BUS_PARTITION_KEY) @@ -260,7 +258,7 @@ public void testAzureHeaderAndServiceBusHeaderPriority() { } @Test - public void testAzureHeaderAndSessionIdPriority() { + void testAzureHeaderAndSessionIdPriority() { Message springMessage = MessageBuilder.withPayload(PAYLOAD) .setHeader(AzureHeaders.PARTITION_KEY, AZURE_HEADER_PARTITION_KEY) .setHeader(ServiceBusMessageHeaders.SESSION_ID, SERVICE_BUS_SESSION_ID) @@ -271,7 +269,7 @@ public void testAzureHeaderAndSessionIdPriority() { } @Test - public void testServiceBusMessageHeadersRead() { + void testServiceBusMessageHeadersRead() { when(this.receivedMessage.getMessageId()).thenReturn(SERVICE_BUS_MESSAGE_ID); when(this.receivedMessage.getTimeToLive()).thenReturn(SERVICE_BUS_TTL); when(this.receivedMessage.getScheduledEnqueueTime()).thenReturn(SERVICE_BUS_SCHEDULED_ENQUEUE_TIME); diff --git a/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md b/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md index 4d5324a996d4..91f8eb3c9943 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-messaging-azure-storage-queue/pom.xml b/sdk/spring/spring-messaging-azure-storage-queue/pom.xml index 0820f4057030..a75dfeeb3c96 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/pom.xml +++ b/sdk/spring/spring-messaging-azure-storage-queue/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-messaging-azure-storage-queue - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Messaging Azure Storage Queue Spring Messaging Azure Storage Queue @@ -32,17 +32,20 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 test-jar test @@ -51,16 +54,11 @@ azure-storage-queue 12.21.1 - - com.azure - azure-core - 1.49.1 - org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -68,25 +66,25 @@ net.bytebuddy byte-buddy - 1.14.12 + 1.14.16 test net.bytebuddy byte-buddy-agent - 1.14.12 + 1.14.16 test org.junit.jupiter junit-jupiter - 5.9.3 + 5.10.2 test org.springframework.boot spring-boot-starter-test - 2.7.18 + 3.3.0 test @@ -105,10 +103,73 @@ + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/StorageQueueTemplate.java b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/StorageQueueTemplate.java index 6dc7b4c73526..383f34d8d2b5 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/StorageQueueTemplate.java +++ b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/StorageQueueTemplate.java @@ -4,12 +4,13 @@ package com.azure.spring.messaging.storage.queue.core; import com.azure.spring.messaging.AzureHeaders; -import com.azure.spring.messaging.checkpoint.AzureCheckpointer; +import com.azure.spring.messaging.converter.AzureMessageConverter; +import com.azure.spring.messaging.implementation.checkpoint.AzureCheckpointer; import com.azure.spring.messaging.checkpoint.Checkpointer; import com.azure.spring.messaging.core.SendOperation; import com.azure.spring.messaging.storage.queue.core.factory.StorageQueueClientFactory; import com.azure.spring.messaging.storage.queue.implementation.StorageQueueHelper; -import com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter; +import com.azure.spring.messaging.storage.queue.implementation.support.converter.StorageQueueMessageConverter; import com.azure.storage.queue.QueueAsyncClient; import com.azure.storage.queue.models.QueueMessageItem; import org.slf4j.Logger; @@ -36,7 +37,7 @@ public class StorageQueueTemplate implements SendOperation { private static final String MSG_SUCCESS_CHECKPOINT = "Checkpointed %s in storage queue '%s'"; private final StorageQueueClientFactory storageQueueClientFactory; - private StorageQueueMessageConverter messageConverter = new StorageQueueMessageConverter(); + private AzureMessageConverter messageConverter = new StorageQueueMessageConverter(); private Class messagePayloadType = byte[].class; @@ -109,18 +110,18 @@ private String buildCheckpointSuccessMessage(QueueMessageItem cloudQueueMessage, } /** - * Get the {@code StorageQueueMessageConverter}. - * @return the StorageQueueMessageConverter. + * Get the message converter. + * @return the message converter. */ - public StorageQueueMessageConverter getMessageConverter() { + public AzureMessageConverter getMessageConverter() { return messageConverter; } /** - * Set the {@code StorageQueueMessageConverter}. - * @param messageConverter the StorageQueueMessageConverter. + * Set the message converter to use. + * @param messageConverter the message converter. */ - public void setMessageConverter(StorageQueueMessageConverter messageConverter) { + public void setMessageConverter(AzureMessageConverter messageConverter) { this.messageConverter = messageConverter; } diff --git a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/properties/StorageQueueProperties.java b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/properties/StorageQueueProperties.java index 4f24bdb80609..cae47a56375d 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/properties/StorageQueueProperties.java +++ b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/core/properties/StorageQueueProperties.java @@ -12,6 +12,12 @@ */ public class StorageQueueProperties extends AzureHttpSdkProperties implements QueueServiceClientProperties { + /** + * Create an instance of {@link StorageQueueProperties}. + */ + public StorageQueueProperties() { + } + private static final String QUEUE_ENDPOINT_PATTERN = "https://%s.queue%s"; /** @@ -43,7 +49,7 @@ public class StorageQueueProperties extends AzureHttpSdkProperties implements Qu */ private QueueServiceVersion serviceVersion; /** - * How queue message body is represented in HTTP requests and responses. + * How queue message body is represented in HTTP requests and responses. All Supported types are: NONE, BASE64. */ private QueueMessageEncoding messageEncoding; diff --git a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/converter/StorageQueueMessageConverter.java b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/implementation/support/converter/StorageQueueMessageConverter.java similarity index 85% rename from sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/converter/StorageQueueMessageConverter.java rename to sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/implementation/support/converter/StorageQueueMessageConverter.java index 332a80d454f9..071f94d0d9e0 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/converter/StorageQueueMessageConverter.java +++ b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/implementation/support/converter/StorageQueueMessageConverter.java @@ -1,10 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.storage.queue.support.converter; +package com.azure.spring.messaging.storage.queue.implementation.support.converter; import com.azure.core.util.BinaryData; -import com.azure.spring.messaging.converter.AbstractAzureMessageConverter; +import com.azure.spring.messaging.implementation.converter.AbstractJacksonAzureMessageConverter; import com.azure.storage.queue.models.QueueMessageItem; import com.fasterxml.jackson.databind.ObjectMapper; @@ -15,7 +15,7 @@ /** * A converter to turn a {@link org.springframework.messaging.Message} to {@link QueueMessageItem} and vice versa. */ -public class StorageQueueMessageConverter extends AbstractAzureMessageConverter { +public class StorageQueueMessageConverter extends AbstractJacksonAzureMessageConverter { private final ObjectMapper objectMapper; diff --git a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/converter/package-info.java b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/converter/package-info.java deleted file mode 100644 index 745931e983be..000000000000 --- a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/converter/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Messaging Storage Queue converter class. - */ -package com.azure.spring.messaging.storage.queue.support.converter; diff --git a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/package-info.java b/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/package-info.java deleted file mode 100644 index b18697f0f0fc..000000000000 --- a/sdk/spring/spring-messaging-azure-storage-queue/src/main/java/com/azure/spring/messaging/storage/queue/support/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -/** - * Spring Messaging Storage Queue support utility class. - */ -package com.azure.spring.messaging.storage.queue.support; diff --git a/sdk/spring/spring-messaging-azure-storage-queue/src/test/java/com/azure/spring/messaging/storage/queue/support/converter/StorageQueueMessageConverterTests.java b/sdk/spring/spring-messaging-azure-storage-queue/src/test/java/com/azure/spring/messaging/storage/queue/implementation/converter/StorageQueueMessageConverterTests.java similarity index 88% rename from sdk/spring/spring-messaging-azure-storage-queue/src/test/java/com/azure/spring/messaging/storage/queue/support/converter/StorageQueueMessageConverterTests.java rename to sdk/spring/spring-messaging-azure-storage-queue/src/test/java/com/azure/spring/messaging/storage/queue/implementation/converter/StorageQueueMessageConverterTests.java index 04fa633271fc..6d3149d3effd 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/src/test/java/com/azure/spring/messaging/storage/queue/support/converter/StorageQueueMessageConverterTests.java +++ b/sdk/spring/spring-messaging-azure-storage-queue/src/test/java/com/azure/spring/messaging/storage/queue/implementation/converter/StorageQueueMessageConverterTests.java @@ -1,10 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.storage.queue.support.converter; +package com.azure.spring.messaging.storage.queue.implementation.converter; import com.azure.spring.messaging.converter.AzureMessageConverter; import com.azure.spring.messaging.converter.UnaryAzureMessageConverterTests; +import com.azure.spring.messaging.storage.queue.implementation.support.converter.StorageQueueMessageConverter; import com.azure.storage.queue.models.QueueMessageItem; import org.springframework.messaging.Message; diff --git a/sdk/spring/spring-messaging-azure/CHANGELOG.md b/sdk/spring/spring-messaging-azure/CHANGELOG.md index 87056a4f02ff..80a99badc572 100644 --- a/sdk/spring/spring-messaging-azure/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure/CHANGELOG.md @@ -1,6 +1,7 @@ # Release History ## 4.20.0-beta.1 (Unreleased) +## 5.14.0-beta.1 (Unreleased) ### Features Added @@ -10,42 +11,86 @@ ### Other Changes +## 5.13.0 (2024-06-06) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5130-2024-06-06) for more details. + ## 4.19.0 (2024-06-03) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4190-2024-06-03) for more details. +## 5.12.0 (2024-05-09) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5120-2024-05-09) for more details. + ## 4.18.0 (2024-05-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4180-2024-05-07) for more details. +## 5.11.0 (2024-03-29) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5110-2024-03-29) for more details. + ## 4.17.0 (2024-03-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4170-2024-03-28) for more details. +## 5.10.0 (2024-03-01) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#5100-2024-03-01) for more details. + ## 4.16.0 (2024-02-28) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4160-2024-02-28) for more details. +## 5.9.1 (2024-02-08) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#591-2024-02-08) for more details. + +## 5.9.0 (2024-02-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#590-2024-02-04) for more details. + ## 4.15.0 (2024-02-02) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4150-2024-02-02) for more details. +## 5.8.0 (2023-12-14) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#580-2023-12-14) for more details. + ## 4.14.0 (2023-12-14) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4140-2023-12-11) for more details. +## 5.7.0 (2023-11-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#570-2023-11-07) for more details. + ## 4.13.0 (2023-11-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4130-2023-11-07) for more details. +## 5.6.0 (2023-10-24) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#560-2023-10-24) for more details. + ## 4.12.0 (2023-10-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4120-2023-10-23) for more details. +## 5.5.0 (2023-08-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#550-2023-08-28) for more details. + ## 4.11.0 (2023-08-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4110-2023-08-25) for more details. +## 5.4.0 (2023-08-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#540-2023-08-02) for more details. + ## 4.10.0 (2023-08-01) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#4100-2023-08-01) for more details. @@ -54,14 +99,34 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#490-2023-06-29) for more details. +## 5.3.0 (2023-06-28) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#530-2023-06-28) for more details. + +## 5.2.0 (2023-06-02) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#520-2023-06-02) for more details. + ## 4.8.0 (2023-05-25) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#480-2023-05-25) for more details. +## 5.1.0 (2023-04-26) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#510-2023-04-26) for more details. + ## 4.7.0 (2023-03-23) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#470-2023-03-23) for more details. +## 5.0.0 (2023-01-17) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#500-2023-01-17) for more details. + +## 6.0.0-beta.4 (2022-12-07) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta4-2022-12-07) for more details. + ## 4.6.0 (2023-02-07) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#460-2023-02-07) for more details. @@ -70,10 +135,18 @@ Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-jav Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#450-2022-12-06) for more details. +## 6.0.0-beta.3 (2022-11-04) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta3-2022-11-04) for more details. + ## 4.4.1 (2022-10-31) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. +## 6.0.0-beta.2 (2022-09-30) + +Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#600-beta2-2022-09-30) for more details. + ## 4.4.0 (2022-09-26) Please refer to [spring/CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/CHANGELOG.md#440-2022-09-26) for more details. diff --git a/sdk/spring/spring-messaging-azure/pom.xml b/sdk/spring/spring-messaging-azure/pom.xml index c904b81b2a78..8f3e57a229bd 100644 --- a/sdk/spring/spring-messaging-azure/pom.xml +++ b/sdk/spring/spring-messaging-azure/pom.xml @@ -12,7 +12,7 @@ com.azure.spring spring-messaging-azure - 4.20.0-beta.1 + 5.14.0-beta.1 Spring Messaging Azure Spring Messaging Azure @@ -32,34 +32,37 @@ GitHub https://github.com/Azure/azure-sdk-for-java/issues - + + + + com.azure.spring spring-cloud-azure-service - 4.20.0-beta.1 + 5.14.0-beta.1 org.springframework spring-messaging - 5.3.32 + 6.1.8 org.springframework spring-tx - 5.3.32 + 6.1.8 true org.springframework.retry spring-retry - 1.3.4 + 2.0.6 true org.springframework.data spring-data-commons - 2.7.18 + 3.3.0 org.slf4j @@ -71,7 +74,7 @@ io.micrometer micrometer-core - 1.9.17 + 1.13.0 true + 3.3.0 + test + + + + org.mockito + mockito-core + 5.11.0 + test + + + + + net.bytebuddy + byte-buddy + 1.14.16 + test + + + net.bytebuddy + byte-buddy-agent + 1.14.16 test + + com.github.spotbugs + spotbugs-maven-plugin + 4.8.2.0 + + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.30.0 + + true + + + + org.revapi + revapi-maven-plugin + 0.14.6 + + true + + + + com.azure.tools + codesnippet-maven-plugin + 1.0.0-beta.10 + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + + base-modules-compile + none + + + + base-compile + none + + + + base-testCompile + none + + + + + compile + + + 17 + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -103,11 +190,11 @@ - org.springframework:spring-messaging:[5.3.32] - org.springframework:spring-tx:[5.3.32] - org.springframework.retry:spring-retry:[1.3.4] - org.springframework.data:spring-data-commons:[2.7.18] - io.micrometer:micrometer-core:[1.9.17] + io.micrometer:micrometer-core:[1.13.0] + org.springframework.data:spring-data-commons:[3.3.0] + org.springframework:spring-messaging:[6.1.8] + org.springframework:spring-tx:[6.1.8] + org.springframework.retry:spring-retry:[2.0.6] @@ -116,7 +203,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 diff --git a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/PropertiesSupplier.java b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/PropertiesSupplier.java index 60b594621ebd..7e4d69a48052 100644 --- a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/PropertiesSupplier.java +++ b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/PropertiesSupplier.java @@ -5,6 +5,9 @@ /** * An interface to provide properties by providing key. + * + * @param the key type. + * @param the properties type. */ @FunctionalInterface public interface PropertiesSupplier { diff --git a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/checkpoint/AzureCheckpointer.java b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/implementation/checkpoint/AzureCheckpointer.java similarity index 92% rename from sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/checkpoint/AzureCheckpointer.java rename to sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/implementation/checkpoint/AzureCheckpointer.java index ca2171c6c6fe..66d85e7cfbc0 100644 --- a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/checkpoint/AzureCheckpointer.java +++ b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/implementation/checkpoint/AzureCheckpointer.java @@ -1,8 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.checkpoint; +package com.azure.spring.messaging.implementation.checkpoint; +import com.azure.spring.messaging.checkpoint.Checkpointer; import org.springframework.lang.NonNull; import reactor.core.publisher.Mono; diff --git a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/converter/AbstractAzureMessageConverter.java b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/implementation/converter/AbstractJacksonAzureMessageConverter.java similarity index 95% rename from sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/converter/AbstractAzureMessageConverter.java rename to sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/implementation/converter/AbstractJacksonAzureMessageConverter.java index e5f8fede4992..f4fcb36fa7f1 100644 --- a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/converter/AbstractAzureMessageConverter.java +++ b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/implementation/converter/AbstractJacksonAzureMessageConverter.java @@ -1,8 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.spring.messaging.converter; +package com.azure.spring.messaging.implementation.converter; +import com.azure.spring.messaging.converter.AzureMessageConverter; +import com.azure.spring.messaging.converter.ConversionException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.lang.NonNull; @@ -21,7 +23,7 @@ * Abstract class handles common conversion logic between <T> and {@link Message} * */ -public abstract class AbstractAzureMessageConverter implements AzureMessageConverter { +public abstract class AbstractJacksonAzureMessageConverter implements AzureMessageConverter { /** * Get the object mapper. diff --git a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/listener/AbstractMessageListenerContainer.java b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/listener/AbstractMessageListenerContainer.java index 0d6ec7558b4e..2aa07968c3ed 100644 --- a/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/listener/AbstractMessageListenerContainer.java +++ b/sdk/spring/spring-messaging-azure/src/main/java/com/azure/spring/messaging/listener/AbstractMessageListenerContainer.java @@ -11,6 +11,13 @@ * The base implementation for the {@link MessageListenerContainer}. */ public abstract class AbstractMessageListenerContainer implements MessageListenerContainer, BeanNameAware { + + /** + * Creates an instance of {@link AbstractMessageListenerContainer}. + */ + public AbstractMessageListenerContainer() { + } + private static final Logger LOG = LoggerFactory.getLogger(AbstractMessageListenerContainer.class); /** diff --git a/sdk/spring/spring-reference.yml b/sdk/spring/spring-reference.yml deleted file mode 100644 index 0c7c430c8485..000000000000 --- a/sdk/spring/spring-reference.yml +++ /dev/null @@ -1,1519 +0,0 @@ -# Please refer to this link to see design details and how to change: -# https://dev.azure.com/SpringOnAzure/Spring%20on%20Azure/_wiki/wikis/spring-integration-private.wiki/280/Spring-Reference-for-Intellij-Plugin ---- -- name: Spring Cloud Azure Bom - content: - - name: Spring Cloud Azure Bom - description: BOM for Spring Cloud Azure support. - artifacts: - - artifactId: spring-cloud-azure-dependencies - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: Bill of Materials (BOM) for Spring Cloud Azure support. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/boms/spring-cloud-azure-dependencies - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#bill-of-material-bom - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-dependencies - dependencyPattern: - gradle: | - dependencyManagement { - imports { - mavenBom "com.azure.spring:spring-cloud-azure-dependencies:${azure.version}" - } - } - maven: | - - - - com.azure.spring - spring-cloud-azure-dependencies - ${azure.version} - pom - import - - - - springProperties: - starter: false - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-dependencies - version: 5.13.0 -- name: Active Directory - content: - - name: Active Directory - description: |- - Azure Active Directory (Azure AD) is Microsoft's cloud-based identity and access - management service, which helps your employees sign in and access resources. - msDocs: https://docs.microsoft.com/azure/active-directory/fundamentals/ - artifacts: - - artifactId: spring-cloud-azure-starter-active-directory - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter provides the most optimal way to connect your Web - application to an Azure Active Directory (AAD for short) tenant and protect resource - server with AAD. It uses the Oauth 2.0 protocol to protect Web applications and resource - servers. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-active-directory - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/aad/spring-cloud-azure-starter-active-directory/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory - version: 5.13.0 -- name: Active Directory B2C - content: - - name: Active Directory B2C - description: |- - Azure Active Directory B2C provides business-to-customer identity as a service. - Your customers use their preferred social, enterprise, or local account identities - to get single sign-on access to your applications and APIs. - msDocs: https://docs.microsoft.com/azure/active-directory-b2c - artifacts: - - artifactId: spring-cloud-azure-starter-active-directory-b2c - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-active-directory-b2c - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory-b2c-oidc - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory-b2c - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/aad/spring-cloud-azure-starter-active-directory-b2c/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 5.13.0 -- name: App Configuration - content: - - name: App Configuration - description: |- - Azure App Configuration provides a service to centrally manage application settings and - feature flags. Modern programs, especially programs running in a cloud, generally have - many components that are distributed in nature. Spreading configuration settings across - these components can lead to hard-to-troubleshoot errors during an application - deployment. Use App Configuration to store all the settings for your application and - secure their accesses in one place. - msDocs: https://docs.microsoft.com/azure/azure-app-configuration/ - artifacts: - - artifactId: spring-cloud-azure-starter-appconfiguration - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure App Configuration. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-appconfiguration - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-appconfiguration - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/appconfiguration/spring-cloud-azure-starter-appconfiguration/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration - version: 5.13.0 - - artifactId: spring-cloud-azure-starter-appconfiguration-config - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: Microsoft's Spring Boot Starter helps developers to load properties - and manage features from Azure App Configuration service for Spring Application. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-appconfiguration-config - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-appconfiguration-config - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/appconfiguration/spring-cloud-azure-starter-appconfiguration-config/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-appconfiguration-config - version: 5.13.0 -- name: Cosmos DB - content: - - name: Spring Data Cosmos - description: |- - Azure Cosmos DB is a fully managed NoSQL database for modern app development. - Single-digit millisecond response times, and automatic and instant scalability, - guarantee speed at any scale. Business continuity is assured with SLA-backed - availability and enterprise-grade security. - msDocs: https://docs.microsoft.com/azure/cosmos-db/ - clientSource: - groupId: com.azure - artifactId: azure-spring-data-cosmos - artifacts: - - artifactId: spring-cloud-azure-starter-data-cosmos - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Spring Data Azure Cosmos DB, which enables developers to easily integrate with Azure Cosmos - DB SQL API using Spring Data. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-data-cosmos - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-cosmos-db - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-data-cosmos - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/cosmos/spring-cloud-azure-starter-data-cosmos/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-data-cosmos - version: 5.13.0 - - name: Cosmos DB - description: |- - Azure Cosmos DB is a fully managed NoSQL database for modern app development. - Single-digit millisecond response times, and automatic and instant scalability, - guarantee speed at any scale. Business continuity is assured with SLA-backed - availability and enterprise-grade security. - msDocs: https://docs.microsoft.com/azure/cosmos-db/ - artifacts: - - artifactId: spring-cloud-azure-starter-cosmos - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Cosmos DB, which enables developers to easily integrate with Azure Cosmos DB SQL API. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-cosmos - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-cosmos - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/cosmos/spring-cloud-azure-starter-cosmos/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-cosmos - version: 5.13.0 -- name: Key Vault - content: - - name: Key Vault - description: Azure Key Vault enables Microsoft Azure applications and users to - store and use secrets and certificates. - msDocs: https://docs.microsoft.com/azure/key-vault/ - artifacts: - - artifactId: spring-cloud-azure-starter-keyvault - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Key Vault. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-keyvault - msdocs: https://learn.microsoft.com/azure/key-vault/ - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/keyvault/spring-cloud-azure-starter-keyvault/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault - version: 5.13.0 - - name: Key Vault - Certificates - description: |- - Azure Key Vault enables Microsoft Azure applications and users to store and use certificates, which are - built on top of keys and secrets and add an automated renewal feature. - msDocs: https://docs.microsoft.com/azure/key-vault/ - clientSource: - groupId: com.azure - artifactId: azure-security-keyvault-certificates - artifacts: - - artifactId: spring-cloud-azure-starter-keyvault-certificates - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Key Vault Certificates. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-keyvault-certificates - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-key-vault-certificates - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault-certificates - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 5.13.0 - - artifactId: azure-security-keyvault-jca - groupId: com.azure - versionGA: 2.8.0 - type: client - links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/azure-security-keyvault-jca/2.8.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/keyvault/azure-security-keyvault-jca - msdocs: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/keyvault/azure-security-keyvault-jca/README.md - repopath: https://search.maven.org/artifact/com.azure/azure-security-keyvault-jca - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/keyvault/azure-securtiy-keyvault-jca - - name: Key Vault - Secrets - description: |- - Azure Key Vault Secrets allows you to securely store and tightly control the access to - tokens, passwords, API keys, and other secrets. This library offers operations to - create, retrieve, update, delete, purge, backup, restore, and list the secrets and its - versions. - msDocs: https://docs.microsoft.com/azure/key-vault/secrets/about-secrets - clientSource: - groupId: com.azure - artifactId: azure-security-keyvault-secrets - artifacts: - - artifactId: spring-cloud-azure-starter-keyvault-secrets - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Key Vault Secrets, and adds Azure Key Vault as one of Spring PropertySource. - Secrets stored in Azure Key Vault could be easily used and conveniently accessed like other - externalized configuration property. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-keyvault-secrets - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-key-vault - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault-secrets - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/keyvault/spring-cloud-azure-starter-keyvault-secrets/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 5.13.0 -- name: Storage - content: - - name: Storage - description: Azure Storage is Microsoft's object storage solution for the cloud. - msDocs: https://docs.microsoft.com/azure/storage/ - artifacts: - - artifactId: spring-cloud-azure-starter-storage - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Storage, and implements Spring Resource abstraction for Azure Storage - service which allows you to interact with Storage Account using Spring programming model. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-storage - msdocs: https://docs.microsoft.com/azure/storage/ - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/storage/spring-cloud-azure-starter-storage/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage - version: 5.13.0 - - name: Storage - Blobs - description: |- - Azure Blob Storage is Microsoft's object storage solution for the cloud. Blob Storage - is optimized for storing massive amounts of unstructured data. Unstructured data is - data that does not adhere to a particular data model or definition, such as text or - binary data. - msDocs: https://docs.microsoft.com/azure/storage/blobs/ - clientSource: - groupId: com.azure - artifactId: azure-storage-blob - artifacts: - - artifactId: spring-cloud-azure-starter-storage-blob - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Storage Blob, and implements Spring Resource abstraction for Azure Storage - service which allows you to interact with Storage Blob using Spring programming model. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-storage-blob - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-storage - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-blob - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/storage/spring-cloud-azure-starter-storage-blob/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-blob - version: 5.13.0 - - name: Storage - Files Shares - description: |- - Azure File Share storage offers fully managed file shares in the cloud that are - accessible via the industry standard Server Message Block (SMB) protocol. Azure file - shares can be mounted concurrently by cloud or on-premises deployments of Windows, - Linux, and macOS. Additionally, Azure file shares can be cached on Windows Servers - with Azure File Sync for fast access near where the data is being used. - msDocs: https://docs.microsoft.com/azure/storage/files/ - clientSource: - groupId: com.azure - artifactId: azure-storage-file-share - artifacts: - - artifactId: spring-cloud-azure-starter-storage-file-share - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Storage File Share, and implements Spring Resource abstraction for Azure Storage - service which allows you to interact with Storage File Share using Spring programming model. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-storage-file-share - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#resource-handling - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-file-share - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/storage/spring-cloud-azure-starter-storage-file-share/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-file-share - version: 5.13.0 - - name: Storage - Queues - description: |- - Azure Queue Storage is a service for storing large numbers of messages. You access - messages from anywhere in the world via authenticated calls using HTTP or HTTPS. A - queue message can be up to 64 KB in size. A queue may contain millions of messages, up - to the total capacity limit of a storage account. Queues are commonly used to create a - backlog of work to process asynchronously. - msDocs: https://docs.microsoft.com/azure/storage/queues/ - clientSource: - groupId: com.azure - artifactId: azure-storage-queue - artifacts: - - artifactId: spring-cloud-azure-starter-storage-queue - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Storage Queue. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-storage-queue - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-queue - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/storage/spring-cloud-azure-starter-storage-queue/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-storage-queue - version: 5.13.0 - - artifactId: spring-cloud-azure-starter-integration-storage-queue - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Spring Integration Azure Storage Queue. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-integration-storage-queue - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-storage-queue - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/storage/spring-cloud-azure-starter-integration-storage-queue/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 5.13.0 - - artifactId: spring-integration-azure-storage-queue - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Integration extension for Azure Storage Queue. Spring Integration extends - the Spring programming modoel to support well-known Enterprise Integration Patterns. - type: spring - links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-storage-queue/4.19.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-integration-azure-storage-queue - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-integration-support - repopath: https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-storage-queue - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/storage/spring-integration-azure-storage-queue/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-integration-azure-storage-queue - version: 5.13.0 -- name: Service Bus - content: - - name: Service Bus - description: |- - Microsoft Azure Service Bus is a fully managed enterprise integration message broker. - Service Bus can decouple applications and services. Service Bus offers a reliable and - secure platform for asynchronous transfer of data and state. Data is transferred - between different applications and services using messages. - msDocs: https://docs.microsoft.com/azure/service-bus-messaging/ - clientSource: - groupId: com.azure - artifactId: azure-messaging-servicebus - artifacts: - - artifactId: spring-cloud-azure-starter-servicebus - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Service Bus. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-servicebus - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/servicebus/spring-cloud-azure-starter-servicebus/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus - version: 5.13.0 - - artifactId: spring-cloud-azure-starter-integration-servicebus - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Spring Integration Azure Service Bus. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-integration-servicebus - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/servicebus/spring-cloud-azure-starter-integration-servicebus/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-servicebus - version: 5.13.0 - - artifactId: spring-integration-azure-servicebus - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Integration extension for Azure Service Bus. Spring Integration extends - the Spring programming modoel to support well-known Enterprise Integration Patterns. - type: spring - links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-servicebus/4.19.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-integration-azure-servicebus - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-integration-support - repopath: https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/servicebus/spring-integration-azure-servicebus/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-integration-azure-servicebus - version: 5.13.0 - - artifactId: spring-cloud-azure-stream-binder-servicebus - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Cloud Stream Binder provides Spring Cloud Stream Binder for Azure - Service Bus which allows you to build message-driven microservice using Spring Cloud - Stream based on Azure Service Bus. - type: spring - links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-cloud-azure-stream-binder-servicebus/4.19.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-stream-binder-servicebus - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-cloud-stream-binder-java-app-with-service-bus - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/servicebus/spring-cloud-azure-stream-binder-servicebus/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-servicebus - version: 5.13.0 - - name: Service Bus JMS - description: |- - Microsoft Azure Service Bus is a fully managed enterprise integration message broker. - Service Bus can decouple applications and services. Service Bus offers a reliable and - secure platform for asynchronous transfer of data and state. Data is transferred - between different applications and services using messages. - msDocs: https://docs.microsoft.com/azure/service-bus-messaging/how-to-use-java-message-service-20 - artifacts: - - artifactId: spring-cloud-azure-starter-servicebus-jms - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Spring JMS with Azure Service Bus Queue and Topic. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-servicebus-jms - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-servicebus-jms - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/servicebus/spring-cloud-azure-starter-servicebus-jms/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-servicebus-jms - version: 5.13.0 -- name: Event Grid - content: - - name: Event Grid - description: |- - Azure Event Grid is a highly scalable, fully managed Pub Sub message - distribution service. It can help build data pipelines with device data, integrate - applications, and build event-driven serverless architectures. It enables - clients to publish and subscribe to messages over the MQTT v3.1.1 and v5.0 - protocols to support Internet of Things (IoT) solutions. Through HTTP, It - enables you to build event-driven solutions where a publisher service announces - its system state changes (events) to subscriber applications. It can be configured - to send events to subscribers (push delivery) or subscribers can connect to - Event Grid to read events (pull delivery). It supports CloudEvents 1.0 specification - to provide interoperability across systems. - msDocs: https://docs.microsoft.com/azure/event-grid/ - clientSource: - groupId: com.azure - artifactId: azure-messaging-eventgrid - artifacts: - - artifactId: spring-cloud-azure-starter-eventgrid - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Event Grid. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-eventgrid - msdocs: https://learn.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-initializer-java-app-with-event-grid - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-eventgrid - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/eventgrid/spring-cloud-azure-starter-eventgrid/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventgrid - version: 5.13.0 -- name: Event Hubs - content: - - name: Event Hubs - description: |- - Azure Event Hubs is a big data streaming platform and event ingestion service. It can - receive and process millions of events per second. Data sent to an event hub can be - transformed and stored by using any real-time analytics provider or batching/storage - adapters. - msDocs: https://docs.microsoft.com/azure/event-hubs/ - clientSource: - groupId: com.azure - artifactId: azure-messaging-eventhubs - artifacts: - - artifactId: spring-cloud-azure-starter-eventhubs - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Event Hubs. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-eventhubs - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/eventhubs/spring-cloud-azure-starter-eventhubs/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-eventhubs - version: 5.13.0 - - artifactId: spring-cloud-azure-starter-integration-eventhubs - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Spring Integration Azure Event Hubs. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-integration-eventhubs - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/eventhubs/spring-cloud-azure-starter-integration-eventhubs/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 5.13.0 - - artifactId: spring-integration-azure-eventhubs - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Integration extension for Azure Event Hubs. Spring Integration extends - the Spring programming modoel to support well-known Enterprise Integration Patterns. - type: spring - links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-eventhubs/4.19.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-integration-azure-eventhubs - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-integration-support - repopath: https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/eventhubs/spring-integration-azure-eventhubs/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-integration-azure-eventhubs - version: 5.13.0 - - artifactId: spring-cloud-azure-stream-binder-eventhubs - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Cloud Stream Binder provides Spring Cloud Stream Binder for Azure - Event Hubs which allows you to build message-driven microservice using Spring Cloud - Stream based on Azure Event Hubs. - type: spring - links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-cloud-azure-stream-binder-eventhubs/4.19.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-stream-binder-eventhubs - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-cloud-stream-binder-for-azure-event-hubs - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/eventhubs/spring-cloud-azure-stream-binder-eventhubs/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 5.13.0 -- name: MySQL - content: - - name: Database for MySQL - description: |- - Azure Database for MySQL is cost effective and easy to set up, operate, and scale. - Enjoy advanced security, same-zone or zone-redundant high availability, and a - service-level agreement (SLA) of up to 99.99 percent. - msDocs: https://docs.microsoft.com/azure/mysql/ - artifacts: - - artifactId: spring-cloud-azure-starter-jdbc-mysql - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Database for MySQL. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-jdbc-mysql - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-jdbc-mysql - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/mysql/spring-cloud-azure-starter-jdbc-mysql/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-mysql - version: 5.13.0 -- name: PostgreSQL - content: - - name: Database for PostgreSQL - description: |- - Azure Database for PostgreSQL offers a service-level agreement (SLA) - of up to 99.99 percent uptime, AI-powered performance optimization, and - advanced security. - msDocs: https://docs.microsoft.com/azure/postgresql/ - artifacts: - - artifactId: spring-cloud-azure-starter-jdbc-postgresql - groupId: com.azure.spring - versionGA: 4.19.0 - versionPreview: 5.13.0 - description: |- - Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of - Azure Database for PostgreSQL. - type: spring - links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.19.0/sdk/spring/spring-cloud-azure-starter-jdbc-postgresql - msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients - repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-jdbc-postgresql - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.19.0/postgresql/spring-cloud-azure-starter-jdbc-postgresql/ - springProperties: - starter: true - bom: spring-cloud-azure-dependencies - compatibilityRange: "[2.5.0,3.3.0]" - mappings: - - compatibilityRange: "[2.5.0,2.5.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 4.19.0 - - compatibilityRange: "[2.6.0,2.6.15]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 4.19.0 - - compatibilityRange: "[2.7.0,2.7.18]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 4.19.0 - - compatibilityRange: "[3.0.0,3.0.13]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 5.13.0 - - compatibilityRange: "[3.1.0,3.1.12]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 5.13.0 - - compatibilityRange: "[3.2.0,3.2.6]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 5.13.0 - - compatibilityRange: "[3.3.0,3.3.0]" - groupId: com.azure.spring - artifactId: spring-cloud-azure-starter-jdbc-postgresql - version: 5.13.0 diff --git a/sdk/spring/tests.yml b/sdk/spring/tests.yml index 5c14c0309e71..5cf926e8b002 100644 --- a/sdk/spring/tests.yml +++ b/sdk/spring/tests.yml @@ -40,7 +40,9 @@ extends: ServiceDirectory: spring TestName: Spring_IT TestGoals: "verify" - TestOptions: "-DskipSpringITs=false" + TestOptions: -DskipSpringITs=false -Dcompiler.failondeprecatedstatus=- + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* - template: /eng/pipelines/templates/stages/archetype-sdk-tests-isolated.yml parameters: UseFederatedAuth: true @@ -68,6 +70,8 @@ extends: ServiceDirectory: spring TestName: Spring_App_Config_IT TestGoals: 'verify' + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* - template: /eng/pipelines/templates/stages/archetype-sdk-tests-isolated.yml parameters: UseFederatedAuth: true @@ -100,4 +104,5 @@ extends: TestName: 'Spring_Data_Cosmos_Integration' TestGoals: 'clean verify' TestOptions: '$(ProfileFlag)' - + MatrixFilters: + - JavaTestVersion=^(?!1.8|1.11).* diff --git a/sdk/springappdiscovery/azure-resourcemanager-springappdiscovery/pom.xml b/sdk/springappdiscovery/azure-resourcemanager-springappdiscovery/pom.xml index eb8f4d19bbdf..2ca02d532cf4 100644 --- a/sdk/springappdiscovery/azure-resourcemanager-springappdiscovery/pom.xml +++ b/sdk/springappdiscovery/azure-resourcemanager-springappdiscovery/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml index f712a65239b2..f2cc90af7148 100644 --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/standbypool/azure-resourcemanager-standbypool/pom.xml b/sdk/standbypool/azure-resourcemanager-standbypool/pom.xml index 3a70e46c8d10..8508d99f5683 100644 --- a/sdk/standbypool/azure-resourcemanager-standbypool/pom.xml +++ b/sdk/standbypool/azure-resourcemanager-standbypool/pom.xml @@ -78,19 +78,19 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/storage/azure-storage-blob-batch/pom.xml b/sdk/storage/azure-storage-blob-batch/pom.xml index 6fbe08b7c628..ac676b33e19c 100644 --- a/sdk/storage/azure-storage-blob-batch/pom.xml +++ b/sdk/storage/azure-storage-blob-batch/pom.xml @@ -71,7 +71,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 + 3.6.6 test @@ -146,7 +146,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-blob-changefeed/pom.xml b/sdk/storage/azure-storage-blob-changefeed/pom.xml index fe0c0a18bc84..5f249a0b0bf8 100644 --- a/sdk/storage/azure-storage-blob-changefeed/pom.xml +++ b/sdk/storage/azure-storage-blob-changefeed/pom.xml @@ -78,7 +78,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 + 3.6.6 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -152,19 +152,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -179,7 +179,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-blob-cryptography/pom.xml b/sdk/storage/azure-storage-blob-cryptography/pom.xml index 45c40db8e12d..cbe6d53bb7bc 100644 --- a/sdk/storage/azure-storage-blob-cryptography/pom.xml +++ b/sdk/storage/azure-storage-blob-cryptography/pom.xml @@ -72,7 +72,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 @@ -138,19 +138,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -177,7 +177,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-blob-nio/pom.xml b/sdk/storage/azure-storage-blob-nio/pom.xml index cc52fe287905..74b771c78824 100644 --- a/sdk/storage/azure-storage-blob-nio/pom.xml +++ b/sdk/storage/azure-storage-blob-nio/pom.xml @@ -69,7 +69,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 @@ -89,25 +89,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -131,7 +131,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -160,7 +160,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-blob-stress/pom.xml b/sdk/storage/azure-storage-blob-stress/pom.xml index 781838f08058..536f6fc2c055 100644 --- a/sdk/storage/azure-storage-blob-stress/pom.xml +++ b/sdk/storage/azure-storage-blob-stress/pom.xml @@ -25,7 +25,7 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 com.azure diff --git a/sdk/storage/azure-storage-blob/pom.xml b/sdk/storage/azure-storage-blob/pom.xml index ce8206301139..c15976046ffc 100644 --- a/sdk/storage/azure-storage-blob/pom.xml +++ b/sdk/storage/azure-storage-blob/pom.xml @@ -91,7 +91,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -162,7 +162,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -203,7 +203,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-common/pom.xml b/sdk/storage/azure-storage-common/pom.xml index c9e506c0d8fb..321b87fc19c1 100644 --- a/sdk/storage/azure-storage-common/pom.xml +++ b/sdk/storage/azure-storage-common/pom.xml @@ -69,7 +69,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -187,7 +187,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-file-datalake-stress/pom.xml b/sdk/storage/azure-storage-file-datalake-stress/pom.xml index a821f549b2d4..2f9810b9a5f0 100644 --- a/sdk/storage/azure-storage-file-datalake-stress/pom.xml +++ b/sdk/storage/azure-storage-file-datalake-stress/pom.xml @@ -25,7 +25,7 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 com.azure diff --git a/sdk/storage/azure-storage-file-datalake/pom.xml b/sdk/storage/azure-storage-file-datalake/pom.xml index fcc72a12fec1..2e22ffcb5cd4 100644 --- a/sdk/storage/azure-storage-file-datalake/pom.xml +++ b/sdk/storage/azure-storage-file-datalake/pom.xml @@ -117,25 +117,25 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/storage/azure-storage-file-share-stress/pom.xml b/sdk/storage/azure-storage-file-share-stress/pom.xml index ee19800893b4..7d391c0bf3ba 100644 --- a/sdk/storage/azure-storage-file-share-stress/pom.xml +++ b/sdk/storage/azure-storage-file-share-stress/pom.xml @@ -25,7 +25,7 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 com.azure diff --git a/sdk/storage/azure-storage-file-share/pom.xml b/sdk/storage/azure-storage-file-share/pom.xml index befc4fc45a73..297045bca760 100644 --- a/sdk/storage/azure-storage-file-share/pom.xml +++ b/sdk/storage/azure-storage-file-share/pom.xml @@ -112,25 +112,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/storage/azure-storage-internal-avro/pom.xml b/sdk/storage/azure-storage-internal-avro/pom.xml index 50700b420259..9a5007faa97a 100644 --- a/sdk/storage/azure-storage-internal-avro/pom.xml +++ b/sdk/storage/azure-storage-internal-avro/pom.xml @@ -64,25 +64,25 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.5 + 2.17.1 org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -94,7 +94,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test @@ -137,7 +137,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 empty-javadoc-jar-with-readme @@ -188,7 +188,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.5] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.17.1] diff --git a/sdk/storage/azure-storage-perf/pom.xml b/sdk/storage/azure-storage-perf/pom.xml index 6095b0ed642e..c45a28141e0b 100644 --- a/sdk/storage/azure-storage-perf/pom.xml +++ b/sdk/storage/azure-storage-perf/pom.xml @@ -78,7 +78,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 com.azure.storage.App azure-storage-blob-perf diff --git a/sdk/storage/azure-storage-queue/pom.xml b/sdk/storage/azure-storage-queue/pom.xml index 85f3518d1765..5b728d8b72a6 100644 --- a/sdk/storage/azure-storage-queue/pom.xml +++ b/sdk/storage/azure-storage-queue/pom.xml @@ -96,25 +96,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/storage/azure-storage-stress/pom.xml b/sdk/storage/azure-storage-stress/pom.xml index 121ebde4cad0..fdb8d231bd81 100644 --- a/sdk/storage/azure-storage-stress/pom.xml +++ b/sdk/storage/azure-storage-stress/pom.xml @@ -25,7 +25,7 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 com.azure diff --git a/sdk/storageactions/azure-resourcemanager-storageactions/pom.xml b/sdk/storageactions/azure-resourcemanager-storageactions/pom.xml index dd9239f4456e..05e8c80c648c 100644 --- a/sdk/storageactions/azure-resourcemanager-storageactions/pom.xml +++ b/sdk/storageactions/azure-resourcemanager-storageactions/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/storagecache/azure-resourcemanager-storagecache/pom.xml b/sdk/storagecache/azure-resourcemanager-storagecache/pom.xml index a99377f4783b..bd56d65e7f53 100644 --- a/sdk/storagecache/azure-resourcemanager-storagecache/pom.xml +++ b/sdk/storagecache/azure-resourcemanager-storagecache/pom.xml @@ -73,25 +73,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/storageimportexport/azure-resourcemanager-storageimportexport/pom.xml b/sdk/storageimportexport/azure-resourcemanager-storageimportexport/pom.xml index 7d33081c0127..e9b219c530f9 100644 --- a/sdk/storageimportexport/azure-resourcemanager-storageimportexport/pom.xml +++ b/sdk/storageimportexport/azure-resourcemanager-storageimportexport/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/storagemover/azure-resourcemanager-storagemover/pom.xml b/sdk/storagemover/azure-resourcemanager-storagemover/pom.xml index 7c9c817efd21..0a1d5a3d7f40 100644 --- a/sdk/storagemover/azure-resourcemanager-storagemover/pom.xml +++ b/sdk/storagemover/azure-resourcemanager-storagemover/pom.xml @@ -72,25 +72,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/storagepool/azure-resourcemanager-storagepool/pom.xml b/sdk/storagepool/azure-resourcemanager-storagepool/pom.xml index 3149886bd3c8..5c26afb63436 100644 --- a/sdk/storagepool/azure-resourcemanager-storagepool/pom.xml +++ b/sdk/storagepool/azure-resourcemanager-storagepool/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/streamanalytics/azure-resourcemanager-streamanalytics/pom.xml b/sdk/streamanalytics/azure-resourcemanager-streamanalytics/pom.xml index 909d67af3fef..c8d3606b683f 100644 --- a/sdk/streamanalytics/azure-resourcemanager-streamanalytics/pom.xml +++ b/sdk/streamanalytics/azure-resourcemanager-streamanalytics/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/subscription/azure-resourcemanager-subscription/pom.xml b/sdk/subscription/azure-resourcemanager-subscription/pom.xml index 4158f17029cc..70aad270b31f 100644 --- a/sdk/subscription/azure-resourcemanager-subscription/pom.xml +++ b/sdk/subscription/azure-resourcemanager-subscription/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/support/azure-resourcemanager-support/pom.xml b/sdk/support/azure-resourcemanager-support/pom.xml index 2ccf0aca68d6..07ec4e0a3cdb 100644 --- a/sdk/support/azure-resourcemanager-support/pom.xml +++ b/sdk/support/azure-resourcemanager-support/pom.xml @@ -72,25 +72,25 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml b/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml index 4a425cd64068..eff7878d23eb 100644 --- a/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml @@ -71,19 +71,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml b/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml index 083ef0b27e24..cb7ede5aba7f 100644 --- a/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml @@ -71,19 +71,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml b/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml index 92782423f22c..9bacf6cf80d4 100644 --- a/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml @@ -71,19 +71,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml b/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml index 6c7e82228d03..b2ec38048625 100644 --- a/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml @@ -71,19 +71,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/synapse/azure-analytics-synapse-spark/pom.xml b/sdk/synapse/azure-analytics-synapse-spark/pom.xml index e222721fc5ed..b5cdce8169ad 100644 --- a/sdk/synapse/azure-analytics-synapse-spark/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-spark/pom.xml @@ -77,19 +77,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/synapse/azure-resourcemanager-synapse/pom.xml b/sdk/synapse/azure-resourcemanager-synapse/pom.xml index 150a8348424f..f140b2f30abb 100644 --- a/sdk/synapse/azure-resourcemanager-synapse/pom.xml +++ b/sdk/synapse/azure-resourcemanager-synapse/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/tables/azure-data-tables/pom.xml b/sdk/tables/azure-data-tables/pom.xml index cb7682135d2d..3dfa1ab5c6a4 100644 --- a/sdk/tables/azure-data-tables/pom.xml +++ b/sdk/tables/azure-data-tables/pom.xml @@ -69,25 +69,25 @@ Licensed under the MIT License. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/template/azure-sdk-template-three/pom.xml b/sdk/template/azure-sdk-template-three/pom.xml index d6c4c0f4c1f0..6e7f16829570 100644 --- a/sdk/template/azure-sdk-template-three/pom.xml +++ b/sdk/template/azure-sdk-template-three/pom.xml @@ -56,19 +56,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/template/azure-sdk-template-two/pom.xml b/sdk/template/azure-sdk-template-two/pom.xml index ea10e75c92e0..469ede95fe64 100644 --- a/sdk/template/azure-sdk-template-two/pom.xml +++ b/sdk/template/azure-sdk-template-two/pom.xml @@ -51,19 +51,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/template/azure-sdk-template/pom.xml b/sdk/template/azure-sdk-template/pom.xml index a821d5c6f001..d6dc47aaf5e7 100644 --- a/sdk/template/azure-sdk-template/pom.xml +++ b/sdk/template/azure-sdk-template/pom.xml @@ -46,19 +46,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/template/azure-template-stress/pom.xml b/sdk/template/azure-template-stress/pom.xml index 0e88b6dbe35a..76548e29f077 100644 --- a/sdk/template/azure-template-stress/pom.xml +++ b/sdk/template/azure-template-stress/pom.xml @@ -27,7 +27,7 @@ ch.qos.logback logback-classic - 1.3.14 + 1.5.6 @@ -97,7 +97,7 @@ io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:[2.4.0-alpha] io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:[2.4.0-alpha] - ch.qos.logback:logback-classic:[1.3.14] + ch.qos.logback:logback-classic:[1.5.6] io.vertx:vertx-codegen:[4.5.8] @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.2 + 3.5.3 package diff --git a/sdk/textanalytics/azure-ai-textanalytics-perf/pom.xml b/sdk/textanalytics/azure-ai-textanalytics-perf/pom.xml index 94ed6d835601..6b871bc51f50 100644 --- a/sdk/textanalytics/azure-ai-textanalytics-perf/pom.xml +++ b/sdk/textanalytics/azure-ai-textanalytics-perf/pom.xml @@ -55,7 +55,7 @@ org.graalvm.buildtools native-maven-plugin - 0.9.19 + 0.10.2 ${perf.test.mainClass} ${perf.test.imageName} diff --git a/sdk/textanalytics/azure-ai-textanalytics/pom.xml b/sdk/textanalytics/azure-ai-textanalytics/pom.xml index a4a38d5ff253..36f140f6f9fa 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/pom.xml +++ b/sdk/textanalytics/azure-ai-textanalytics/pom.xml @@ -91,19 +91,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/timeseriesinsights/azure-resourcemanager-timeseriesinsights/pom.xml b/sdk/timeseriesinsights/azure-resourcemanager-timeseriesinsights/pom.xml index c6bca7c9d664..8c39a0e34add 100644 --- a/sdk/timeseriesinsights/azure-resourcemanager-timeseriesinsights/pom.xml +++ b/sdk/timeseriesinsights/azure-resourcemanager-timeseriesinsights/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/tools/azure-sdk-archetype/pom.xml b/sdk/tools/azure-sdk-archetype/pom.xml index d07c4a38bd8b..ed46fec99795 100644 --- a/sdk/tools/azure-sdk-archetype/pom.xml +++ b/sdk/tools/azure-sdk-archetype/pom.xml @@ -155,7 +155,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.3.0 + 3.4.1 empty-javadoc-jar-with-readme diff --git a/sdk/tools/azure-sdk-build-tool/pom.xml b/sdk/tools/azure-sdk-build-tool/pom.xml index d90a9e0a3920..d2015567c0a5 100644 --- a/sdk/tools/azure-sdk-build-tool/pom.xml +++ b/sdk/tools/azure-sdk-build-tool/pom.xml @@ -113,19 +113,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/translation/azure-ai-documenttranslator/pom.xml b/sdk/translation/azure-ai-documenttranslator/pom.xml index 53fd224bdd16..94df0d3ee521 100644 --- a/sdk/translation/azure-ai-documenttranslator/pom.xml +++ b/sdk/translation/azure-ai-documenttranslator/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/translation/azure-ai-translation-document/pom.xml b/sdk/translation/azure-ai-translation-document/pom.xml index d8b48870d617..513f7893d80b 100644 --- a/sdk/translation/azure-ai-translation-document/pom.xml +++ b/sdk/translation/azure-ai-translation-document/pom.xml @@ -57,7 +57,7 @@ Code generated by Microsoft (R) TypeSpec Code Generator. azure-storage-blob 12.26.1 test - + com.azure azure-core-http-netty @@ -66,13 +66,13 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test @@ -90,7 +90,7 @@ Code generated by Microsoft (R) TypeSpec Code Generator. org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/translation/azure-ai-translation-text/pom.xml b/sdk/translation/azure-ai-translation-text/pom.xml index cde9c4d05ddf..5a6a1592daff 100644 --- a/sdk/translation/azure-ai-translation-text/pom.xml +++ b/sdk/translation/azure-ai-translation-text/pom.xml @@ -59,19 +59,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml b/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml index 585fd106db00..ec2958d6bff1 100644 --- a/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml +++ b/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml @@ -40,19 +40,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/vision/azure-ai-vision-imageanalysis/pom.xml b/sdk/vision/azure-ai-vision-imageanalysis/pom.xml index 5f56e3acfdc7..67c507f258c2 100644 --- a/sdk/vision/azure-ai-vision-imageanalysis/pom.xml +++ b/sdk/vision/azure-ai-vision-imageanalysis/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -102,7 +102,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/vmwarecloudsimple/azure-resourcemanager-vmwarecloudsimple/pom.xml b/sdk/vmwarecloudsimple/azure-resourcemanager-vmwarecloudsimple/pom.xml index e103950e3ff5..accd5cc97b30 100644 --- a/sdk/vmwarecloudsimple/azure-resourcemanager-vmwarecloudsimple/pom.xml +++ b/sdk/vmwarecloudsimple/azure-resourcemanager-vmwarecloudsimple/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -98,7 +98,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/voiceservices/azure-resourcemanager-voiceservices/pom.xml b/sdk/voiceservices/azure-resourcemanager-voiceservices/pom.xml index 5bfc954f7f9d..54af71699527 100644 --- a/sdk/voiceservices/azure-resourcemanager-voiceservices/pom.xml +++ b/sdk/voiceservices/azure-resourcemanager-voiceservices/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml b/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml index c23f9d10971b..80d1477c00cb 100644 --- a/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml +++ b/sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml @@ -62,19 +62,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test diff --git a/sdk/webpubsub/azure-messaging-webpubsub/pom.xml b/sdk/webpubsub/azure-messaging-webpubsub/pom.xml index 39ae153bbf02..faf0110cca18 100644 --- a/sdk/webpubsub/azure-messaging-webpubsub/pom.xml +++ b/sdk/webpubsub/azure-messaging-webpubsub/pom.xml @@ -64,19 +64,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-params - 5.9.3 + 5.10.2 test @@ -88,7 +88,7 @@ io.projectreactor reactor-test - 3.4.38 + 3.6.6 test diff --git a/sdk/webpubsub/azure-resourcemanager-webpubsub/pom.xml b/sdk/webpubsub/azure-resourcemanager-webpubsub/pom.xml index a628c623090e..ae4c63317d52 100644 --- a/sdk/webpubsub/azure-resourcemanager-webpubsub/pom.xml +++ b/sdk/webpubsub/azure-resourcemanager-webpubsub/pom.xml @@ -73,19 +73,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -105,7 +105,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test diff --git a/sdk/workloads/azure-resourcemanager-workloads/pom.xml b/sdk/workloads/azure-resourcemanager-workloads/pom.xml index 8c91d1a72e59..3f37c4bb4ab2 100644 --- a/sdk/workloads/azure-resourcemanager-workloads/pom.xml +++ b/sdk/workloads/azure-resourcemanager-workloads/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.9.3 + 5.10.2 test org.junit.jupiter junit-jupiter-engine - 5.9.3 + 5.10.2 test org.mockito mockito-core - 4.11.0 + 5.11.0 test @@ -104,7 +104,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.13 test