diff --git a/.gitignore b/.gitignore index 704fcd5cd..3344ee569 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,7 @@ applog/ .flattened-pom.xml # Polaris +polaris */backup /backup backup diff --git a/pom.xml b/pom.xml index efba570c8..79f13977f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-build - 2.3.4.RELEASE + 2.1.11.RELEASE 4.0.0 @@ -74,7 +74,7 @@ 1.1.4.Hoxton.SR9-SNAPSHOT - Hoxton.SR9 + Greenwich.SR5 0.8.3 diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml index 7922fa66d..c84cb376c 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -59,6 +59,13 @@ Tencent https://github.com/xiaoyao1999hn/ + + + chuntaojun + liaochuntao@live.com + Tencent + https://github.com/chuntaojun/ + @@ -66,6 +73,7 @@ 1.2.0 10.0.0-M6 2.0.0 + 23.0 3.2.0 @@ -90,13 +98,18 @@ ${tomcat.version} + + com.google.guava + guava + ${guava.version} + + com.tencent.cloud spring-cloud-tencent-commons ${revision} - com.tencent.cloud spring-cloud-starter-tencent-polaris-ratelimit diff --git a/spring-cloud-tencent-examples/polaris-discovery-example/discovery-caller-service/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/polaris-discovery-example/discovery-caller-service/src/main/resources/bootstrap.yml index 43930793e..6fac7c686 100644 --- a/spring-cloud-tencent-examples/polaris-discovery-example/discovery-caller-service/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/polaris-discovery-example/discovery-caller-service/src/main/resources/bootstrap.yml @@ -23,4 +23,4 @@ spring: eureka: client: serviceUrl: - defaultZone: http://127.0.0.1:7654/eureka/ + defaultZone: http://127.0.0.1:7654/eureka/ \ No newline at end of file diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java index 38d0cb10d..1f14b94ab 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java @@ -18,7 +18,7 @@ package com.tencent.cloud.polaris.discovery; import com.tencent.cloud.polaris.PolarisProperties; -import com.tencent.cloud.polaris.discovery.reactive.PolarisReactiveDiscoveryClientConfiguration; +import com.tencent.cloud.polaris.context.PolarisContextConfiguration; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.api.core.ProviderAPI; import com.tencent.polaris.api.exception.PolarisException; @@ -34,9 +34,9 @@ import org.springframework.context.annotation.Import; * * @author Haotian Zhang, Andrew Shan, Jie Cheng */ -@Configuration(proxyBeanMethods = false) +@Configuration() @ConditionalOnPolarisDiscoveryEnabled -@Import({PolarisDiscoveryClientConfiguration.class, PolarisReactiveDiscoveryClientConfiguration.class}) +@Import({PolarisDiscoveryClientConfiguration.class}) public class PolarisDiscoveryAutoConfiguration { @Bean diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfiguration.java index a788d2b59..c787e8b56 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfiguration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfiguration.java @@ -20,7 +20,6 @@ package com.tencent.cloud.polaris.discovery; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.cloud.client.CommonsClientAutoConfiguration; -import org.springframework.cloud.client.ConditionalOnBlockingDiscoveryEnabled; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration; import org.springframework.context.annotation.Bean; @@ -31,8 +30,7 @@ import org.springframework.context.annotation.Configuration; * * @author Haotian Zhang, Andrew Shan, Jie Cheng */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnBlockingDiscoveryEnabled +@Configuration() @AutoConfigureBefore({SimpleDiscoveryClientAutoConfiguration.class, CommonsClientAutoConfiguration.class}) @AutoConfigureAfter(PolarisDiscoveryAutoConfiguration.class) diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClient.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClient.java deleted file mode 100644 index b316f5d86..000000000 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClient.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the BSD 3-Clause License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://opensource.org/licenses/BSD-3-Clause - * - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -package com.tencent.cloud.polaris.discovery.reactive; - -import com.tencent.polaris.api.exception.PolarisException; -import com.tencent.cloud.polaris.discovery.PolarisServiceDiscovery; -import java.util.function.Function; -import org.reactivestreams.Publisher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.core.scheduler.Schedulers; - -/** - * Reactive Discovery Client for Polaris. - * - * @author Haotian Zhang, Andrew Shan, Jie Cheng - */ -public class PolarisReactiveDiscoveryClient implements ReactiveDiscoveryClient { - - private static final Logger log = LoggerFactory - .getLogger(PolarisReactiveDiscoveryClient.class); - - private PolarisServiceDiscovery polarisServiceDiscovery; - - public PolarisReactiveDiscoveryClient( - PolarisServiceDiscovery polarisServiceDiscovery) { - this.polarisServiceDiscovery = polarisServiceDiscovery; - } - - @Override - public String description() { - return "Spring Cloud Polaris Reactive Discovery Client"; - } - - @Override - public Flux getInstances(String serviceId) { - - return Mono.justOrEmpty(serviceId).flatMapMany(loadInstancesFromPolaris()) - .subscribeOn(Schedulers.boundedElastic()); - } - - private Function> loadInstancesFromPolaris() { - return serviceId -> { - try { - return Flux.fromIterable(polarisServiceDiscovery.getInstances(serviceId)); - } catch (PolarisException e) { - log.error("get service instance[{}] from polaris error!", serviceId, e); - return Flux.empty(); - } - }; - } - - @Override - public Flux getServices() { - return Flux.defer(() -> { - try { - return Flux.fromIterable(polarisServiceDiscovery.getServices()); - } catch (Exception e) { - log.error("get services from polaris server fail,", e); - return Flux.empty(); - } - }).subscribeOn(Schedulers.boundedElastic()); - } - -} diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfiguration.java deleted file mode 100644 index 77a62343c..000000000 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfiguration.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the BSD 3-Clause License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://opensource.org/licenses/BSD-3-Clause - * - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -package com.tencent.cloud.polaris.discovery.reactive; - -import com.tencent.cloud.polaris.discovery.PolarisDiscoveryAutoConfiguration; -import com.tencent.cloud.polaris.discovery.PolarisServiceDiscovery; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.cloud.client.ConditionalOnReactiveDiscoveryEnabled; -import org.springframework.cloud.client.ReactiveCommonsClientAutoConfiguration; -import org.springframework.cloud.client.discovery.composite.reactive.ReactiveCompositeDiscoveryClientAutoConfiguration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Reactive Discovery Client Configuration for Polaris. - * - * @author Haotian Zhang, Andrew Shan, Jie Cheng - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnReactiveDiscoveryEnabled -@AutoConfigureAfter({PolarisDiscoveryAutoConfiguration.class, - ReactiveCompositeDiscoveryClientAutoConfiguration.class}) -@AutoConfigureBefore({ReactiveCommonsClientAutoConfiguration.class}) -public class PolarisReactiveDiscoveryClientConfiguration { - - @Bean - @ConditionalOnMissingBean - public PolarisReactiveDiscoveryClient polarisReactiveDiscoveryClient( - PolarisServiceDiscovery polarisServiceDiscovery) { - return new PolarisReactiveDiscoveryClient(polarisServiceDiscovery); - } - -} diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java index 85816e618..7957e85f9 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java @@ -36,7 +36,7 @@ import org.springframework.context.annotation.Configuration; /** * @author Haotian Zhang, Andrew Shan, Jie Cheng */ -@Configuration(proxyBeanMethods = false) +@Configuration() @EnableConfigurationProperties @ConditionalOnPolarisDiscoveryEnabled @ConditionalOnProperty(value = "spring.cloud.service-registry.auto-registration.enabled", matchIfMissing = true) diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/ribbon/PolarisDiscoveryRibbonAutoConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/ribbon/PolarisDiscoveryRibbonAutoConfiguration.java index 869c73281..dc04ffb83 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/ribbon/PolarisDiscoveryRibbonAutoConfiguration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/ribbon/PolarisDiscoveryRibbonAutoConfiguration.java @@ -27,7 +27,7 @@ import org.springframework.context.annotation.Configuration; /** * @author Haotian Zhang, Andrew Shan, Jie Cheng */ -@Configuration(proxyBeanMethods = false) +@Configuration() @EnableConfigurationProperties @ConditionalOnPolarisDiscoveryEnabled @AutoConfigureAfter(RibbonAutoConfiguration.class) diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java deleted file mode 100644 index 330cde352..000000000 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the BSD 3-Clause License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://opensource.org/licenses/BSD-3-Clause - * - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -package com.tencent.cloud.polaris.discovery.reactive; - -import static com.tencent.polaris.test.common.Consts.PORT; -import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER; -import static org.assertj.core.api.Assertions.assertThat; - -import com.tencent.cloud.polaris.context.PolarisContextConfiguration; -import com.tencent.cloud.polaris.discovery.PolarisDiscoveryClientConfiguration; -import com.tencent.polaris.test.mock.discovery.NamingServer; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.context.annotation.Configuration; - -public class PolarisReactiveDiscoveryClientConfigurationTest { - - private static NamingServer namingServer; - - private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() - .withConfiguration(AutoConfigurations.of( - PolarisContextConfiguration.class, - PolarisReactiveDiscoveryClientConfiguration.class, - PolarisDiscoveryClientConfiguration.class)) - .withPropertyValues("spring.application.name=" + SERVICE_PROVIDER) - .withPropertyValues("server.port=" + PORT) - .withPropertyValues("spring.cloud.polaris.address=grpc://127.0.0.1:10081"); - - @BeforeClass - public static void beforeClass() throws Exception { - namingServer = NamingServer.startNamingServer(10081); - } - - @AfterClass - public static void afterClass() throws Exception { - if (null != namingServer) { - namingServer.terminate(); - } - } - - @Test - public void testDefaultInitialization() { - this.contextRunner.run(context -> assertThat(context) - .hasSingleBean(PolarisReactiveDiscoveryClient.class)); - } - - - @Configuration - @EnableAutoConfiguration - @EnableDiscoveryClient - static class PolarisReactiveDiscoveryClientConfiguration { - } -} diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientTest.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientTest.java deleted file mode 100644 index aaca939f1..000000000 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the BSD 3-Clause License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://opensource.org/licenses/BSD-3-Clause - * - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -package com.tencent.cloud.polaris.discovery.reactive; - -import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER; -import static java.util.Collections.singletonList; -import static org.mockito.Mockito.when; - -import com.tencent.polaris.api.exception.PolarisException; -import com.tencent.cloud.polaris.discovery.PolarisServiceDiscovery; - -import java.util.Arrays; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.modules.junit4.PowerMockRunner; -import org.springframework.cloud.client.ServiceInstance; -import reactor.core.publisher.Flux; -import reactor.test.StepVerifier; - -@RunWith(PowerMockRunner.class) -@PowerMockIgnore("javax.management.*") -public class PolarisReactiveDiscoveryClientTest { - - @Mock - private PolarisServiceDiscovery serviceDiscovery; - - @Mock - private ServiceInstance serviceInstance; - - @InjectMocks - private PolarisReactiveDiscoveryClient client; - - @Test - public void testGetInstances() throws PolarisException { - - when(serviceDiscovery.getInstances(SERVICE_PROVIDER)).thenReturn(singletonList(serviceInstance)); - - Flux instances = this.client.getInstances(SERVICE_PROVIDER); - - StepVerifier.create(instances).expectNextCount(1).expectComplete().verify(); - } - - @Test - public void testGetServices() throws PolarisException { - - when(serviceDiscovery.getServices()).thenReturn(Arrays.asList(SERVICE_PROVIDER + 1, SERVICE_PROVIDER + 2)); - - Flux services = this.client.getServices(); - - StepVerifier.create(services).expectNext(SERVICE_PROVIDER + 1, SERVICE_PROVIDER + 2) - .expectComplete().verify(); - } - -} diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/PolarisRibbonAutoConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/PolarisRibbonAutoConfiguration.java index 8d33972ae..a172e25f1 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/PolarisRibbonAutoConfiguration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/config/PolarisRibbonAutoConfiguration.java @@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration; * * @author Haotian Zhang */ -@Configuration(proxyBeanMethods = false) +@Configuration() @EnableConfigurationProperties @ConditionalOnProperty(value = "spring.cloud.polaris.loadbalancer.enabled", matchIfMissing = true) @AutoConfigureAfter(RibbonAutoConfiguration.class) diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/polaris/pojo/PolarisServer.java b/spring-cloud-tencent-starters/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/polaris/pojo/PolarisServer.java index eeb8c74b7..863d0c1b0 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/polaris/pojo/PolarisServer.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/polaris/pojo/PolarisServer.java @@ -17,13 +17,13 @@ package com.tencent.cloud.polaris.pojo; -import com.google.common.base.Objects; import com.netflix.loadbalancer.Server; import com.tencent.polaris.api.pojo.Instance; import com.tencent.polaris.api.pojo.ServiceInstances; import org.apache.commons.lang.StringUtils; import java.util.Map; +import java.util.Objects; /** * Polaris implementation of {@link Server} @@ -95,12 +95,12 @@ public class PolarisServer extends Server { return false; } PolarisServer that = (PolarisServer) o; - return Objects.equal(instance, that.instance); + return Objects.equals(instance, that.instance); } @Override public int hashCode() { - return Objects.hashCode(super.hashCode(), instance); + return Objects.hash(super.hashCode(), instance); } public ServiceInstances getServiceInstances() { diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-feign/src/main/java/com/tencent/cloud/feign/PluggableFeignContractHolder.java b/spring-cloud-tencent-starters/spring-cloud-tencent-feign/src/main/java/com/tencent/cloud/feign/PluggableFeignContractHolder.java index 9b246d35e..b80067bdc 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-feign/src/main/java/com/tencent/cloud/feign/PluggableFeignContractHolder.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-feign/src/main/java/com/tencent/cloud/feign/PluggableFeignContractHolder.java @@ -43,8 +43,8 @@ public class PluggableFeignContractHolder implements Contract { } @Override - public List parseAndValidateMetadata(Class targetType) { - List metadataList = delegate.parseAndValidateMetadata(targetType); + public List parseAndValidatateMetadata(Class targetType) { + List metadataList = delegate.parseAndValidatateMetadata(targetType); metadataList.forEach(metadata -> METHOD_METADATA.put(targetType.getPackage().getName() + "." + metadata.configKey(), metadata)); return metadataList; diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/core/interceptor/feign/Metadata2HeaderFeignInterceptor.java b/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/core/interceptor/feign/Metadata2HeaderFeignInterceptor.java index 11c33ed0e..401ca0497 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/core/interceptor/feign/Metadata2HeaderFeignInterceptor.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/core/interceptor/feign/Metadata2HeaderFeignInterceptor.java @@ -30,6 +30,9 @@ import org.springframework.util.CollectionUtils; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; import static com.tencent.cloud.metadata.constant.MetadataConstant.HeaderName.CUSTOM_METADATA; @@ -67,7 +70,9 @@ public class Metadata2HeaderFeignInterceptor implements RequestInterceptor, Orde Map customMetadata = metadataContext.getAllTransitiveCustomMetadata(); if (!CollectionUtils.isEmpty(customMetadata)) { String metadataStr = JacksonUtils.serialize2Json(customMetadata); - requestTemplate.removeHeader(CUSTOM_METADATA); + + //empty value, clear the existing values + requestTemplate.header(CUSTOM_METADATA, Collections.emptyList()); try { requestTemplate.header(CUSTOM_METADATA, URLEncoder.encode(metadataStr, "UTF-8")); diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/util/JacksonUtils.java b/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/util/JacksonUtils.java index a5b9d156b..f0cffd2f6 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/util/JacksonUtils.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/util/JacksonUtils.java @@ -23,6 +23,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -69,6 +70,8 @@ public class JacksonUtils { } catch (JsonProcessingException e) { LOG.error("Json to map failed. check if the format of the json string[{}] is correct.", jsonStr, e); throw new RuntimeException("Json to map failed.", e); + } catch (IOException e) { + throw new RuntimeException(e); } } } diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml index 19bfeccde..7afe179f6 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml @@ -97,6 +97,24 @@ spring-boot-starter-test test + + org.springframework.cloud + spring-cloud-commons + + + org.springframework.boot + spring-boot + + + commons-lang + commons-lang + 2.6 + compile + + + org.springframework.boot + spring-boot-autoconfigure + \ No newline at end of file diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java index 289dcaf17..f42966182 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java @@ -26,9 +26,10 @@ import java.util.List; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.cloud.commons.util.InetUtilsProperties; import org.springframework.core.env.Environment; import org.springframework.util.CollectionUtils; +import org.springframework.cloud.commons.util.InetUtils; + /** * Properties for Polaris {@link com.tencent.polaris.client.api.SDKContext} @@ -44,7 +45,7 @@ public class PolarisContextProperties { private String address; @Autowired - private InetUtilsProperties inetUtilsProperties; + private InetUtils inetUtils; @Autowired private Environment environment; @@ -76,7 +77,7 @@ public class PolarisContextProperties { } private String getHost() { - String defaultIpAddress = inetUtilsProperties.getDefaultIpAddress(); + String defaultIpAddress = inetUtils.findFirstNonLoopbackAddress().getHostAddress(); if (!StringUtils.isBlank(defaultIpAddress) && !defaultIpAddress.equals("127.0.0.1")) { return defaultIpAddress; } diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java index 53e315739..b4a6d9d86 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java @@ -18,9 +18,9 @@ package com.tencent.cloud.polaris.context; import com.tencent.polaris.client.api.SDKContext; +import org.apache.commons.lang.StringUtils; import org.junit.Assert; import org.junit.Test; -import org.junit.platform.commons.util.StringUtils; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;