From acd7681368cffab48e999e099d4ff7c41e1d6bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com> Date: Sat, 30 May 2020 17:07:43 +0800 Subject: [PATCH 01/10] add NacosRegistrationCustomizer.java --- .../nacos/registry/NacosRegistration.java | 15 ++++++++- .../registry/NacosRegistrationCustomizer.java | 31 +++++++++++++++++++ ...NacosServiceRegistryAutoConfiguration.java | 11 ++++--- 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java index aac1b82fc..5531d9360 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java @@ -17,6 +17,7 @@ package com.alibaba.cloud.nacos.registry; import java.net.URI; +import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; @@ -62,8 +63,11 @@ public class NacosRegistration implements Registration, ServiceInstance { private ApplicationContext context; + private List registrationCustomizers; + public NacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties, - ApplicationContext context) { + ApplicationContext context, + List registrationCustomizers) { this.nacosDiscoveryProperties = nacosDiscoveryProperties; this.context = context; } @@ -105,6 +109,15 @@ public class NacosRegistration implements Registration, ServiceInstance { metadata.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, nacosDiscoveryProperties.getIpDeleteTimeout().toString()); } + customize(registrationCustomizers,this); + } + + private static void customize(List registrationCustomizers, NacosRegistration registration) { + if (registrationCustomizers != null) { + for (NacosRegistrationCustomizer customizer : registrationCustomizers) { + customizer.customize(registration); + } + } } @Override diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java new file mode 100644 index 000000000..ebf15c679 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java @@ -0,0 +1,31 @@ +/* + * Copyright 2013-2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * 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.alibaba.cloud.nacos.registry; + +/** + * @author L.cm + */ +public interface NacosRegistrationCustomizer { + + /** + * customize NacosRegistration + * + * @param registration NacosRegistration + */ + void customize(NacosRegistration registration); + +} \ No newline at end of file diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java index 04381401e..eb5783aa1 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java @@ -20,6 +20,7 @@ import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -31,6 +32,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.util.List; + /** * @author xiaojing * @author Mercy @@ -53,10 +56,10 @@ public class NacosServiceRegistryAutoConfiguration { @Bean @ConditionalOnBean(AutoServiceRegistrationProperties.class) - public NacosRegistration nacosRegistration( - NacosDiscoveryProperties nacosDiscoveryProperties, - ApplicationContext context) { - return new NacosRegistration(nacosDiscoveryProperties, context); + public NacosRegistration nacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties, + ApplicationContext context, + ObjectProvider> registrationCustomizers) { + return new NacosRegistration(nacosDiscoveryProperties, context, registrationCustomizers.getIfAvailable()); } @Bean From d3d7bc00bb661555f0e31067a445f18627c5fad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com> Date: Sat, 30 May 2020 17:35:59 +0800 Subject: [PATCH 02/10] add NacosRegistrationCustomizer.java --- .../cloud/nacos/registry/NacosRegistration.java | 17 ++++++++++------- .../registry/NacosRegistrationCustomizer.java | 5 ++--- .../NacosServiceRegistryAutoConfiguration.java | 14 ++++++++------ 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java index 5531d9360..92f1ca42c 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistration.java @@ -59,15 +59,16 @@ public class NacosRegistration implements Registration, ServiceInstance { */ public static final String MANAGEMENT_ENDPOINT_BASE_PATH = "management.endpoints.web.base-path"; + private List registrationCustomizers; + private NacosDiscoveryProperties nacosDiscoveryProperties; private ApplicationContext context; - private List registrationCustomizers; - - public NacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties, - ApplicationContext context, - List registrationCustomizers) { + public NacosRegistration(List registrationCustomizers, + NacosDiscoveryProperties nacosDiscoveryProperties, + ApplicationContext context) { + this.registrationCustomizers = registrationCustomizers; this.nacosDiscoveryProperties = nacosDiscoveryProperties; this.context = context; } @@ -109,10 +110,12 @@ public class NacosRegistration implements Registration, ServiceInstance { metadata.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, nacosDiscoveryProperties.getIpDeleteTimeout().toString()); } - customize(registrationCustomizers,this); + customize(registrationCustomizers, this); } - private static void customize(List registrationCustomizers, NacosRegistration registration) { + private static void customize( + List registrationCustomizers, + NacosRegistration registration) { if (registrationCustomizers != null) { for (NacosRegistrationCustomizer customizer : registrationCustomizers) { customizer.customize(registration); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java index ebf15c679..e04376022 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizer.java @@ -22,10 +22,9 @@ package com.alibaba.cloud.nacos.registry; public interface NacosRegistrationCustomizer { /** - * customize NacosRegistration - * + * customize NacosRegistration. * @param registration NacosRegistration */ void customize(NacosRegistration registration); -} \ No newline at end of file +} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java index eb5783aa1..c51c085ed 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistryAutoConfiguration.java @@ -16,6 +16,8 @@ package com.alibaba.cloud.nacos.registry; +import java.util.List; + import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration; @@ -32,8 +34,6 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import java.util.List; - /** * @author xiaojing * @author Mercy @@ -56,10 +56,12 @@ public class NacosServiceRegistryAutoConfiguration { @Bean @ConditionalOnBean(AutoServiceRegistrationProperties.class) - public NacosRegistration nacosRegistration(NacosDiscoveryProperties nacosDiscoveryProperties, - ApplicationContext context, - ObjectProvider> registrationCustomizers) { - return new NacosRegistration(nacosDiscoveryProperties, context, registrationCustomizers.getIfAvailable()); + public NacosRegistration nacosRegistration( + ObjectProvider> registrationCustomizers, + NacosDiscoveryProperties nacosDiscoveryProperties, + ApplicationContext context) { + return new NacosRegistration(registrationCustomizers.getIfAvailable(), + nacosDiscoveryProperties, context); } @Bean From 7921da5ee63ee4f10084c9a2f55fccc2f3dc9e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=81=E6=99=93=E6=B3=A2?= Date: Wed, 15 Jul 2020 21:26:54 +0800 Subject: [PATCH 03/10] to avoid k8s readinessProbe remove the pod For sentinel , we just no need remove the pod just because of the dashboard unreachable. --- .../cloud/sentinel/endpoint/SentinelHealthIndicator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java index 39b43408c..996a483b7 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java @@ -105,7 +105,7 @@ public class SentinelHealthIndicator extends AbstractHealthIndicator { // If failed to send heartbeat message, means that the Dashboard is DOWN dashboardUp = false; detailMap.put("dashboard", - new Status(Status.DOWN.getCode(), String.format( + new Status(Status.UNKNOWN.getCode(), String.format( "the dashboard servers [%s] one of them can't be connected", consoleServerList))); } @@ -138,7 +138,7 @@ public class SentinelHealthIndicator extends AbstractHealthIndicator { // DOWN dataSourceUp = false; dataSourceDetailMap.put(dataSourceBeanName, - new Status(Status.DOWN.getCode(), e.getMessage())); + new Status(Status.UNKNOWN.getCode(), e.getMessage())); } } @@ -147,7 +147,7 @@ public class SentinelHealthIndicator extends AbstractHealthIndicator { builder.up().withDetails(detailMap); } else { - builder.down().withDetails(detailMap); + builder.unknown().withDetails(detailMap); } } From 2d6aead7eb247afe385a0a0003aae7189b473d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=81=E6=99=93=E6=B3=A2?= Date: Wed, 15 Jul 2020 23:49:50 +0800 Subject: [PATCH 04/10] update SentinelHealthIndicatorTests --- .../cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java index b8d68d522..979fed45d 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java @@ -163,7 +163,7 @@ public class SentinelHealthIndicatorTests { Health health = sentinelHealthIndicator.health(); - assertThat(health.getStatus()).isEqualTo(Status.DOWN); + assertThat(health.getStatus()).isEqualTo(Status.UNKNOWN); Map dataSourceDetailMap = (Map) health .getDetails().get("dataSource"); assertThat(dataSourceDetailMap.get("ds1-sentinel-file-datasource")) From eb09c52db57318b764dd3acbc3c09d7f038c9d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=81=E6=99=93=E6=B3=A2?= Date: Thu, 16 Jul 2020 12:56:58 +0800 Subject: [PATCH 05/10] Update SentinelHealthIndicatorTests.java update down status to unknown --- .../sentinel/endpoint/SentinelHealthIndicatorTests.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java index 979fed45d..96b7adaae 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java @@ -109,9 +109,9 @@ public class SentinelHealthIndicatorTests { Health health = sentinelHealthIndicator.health(); - assertThat(health.getStatus()).isEqualTo(Status.DOWN); + assertThat(health.getStatus()).isEqualTo(Status.UNKNOWN); assertThat(health.getDetails().get("dashboard")).isEqualTo( - new Status(Status.DOWN.getCode(), "localhost:8080 can't be connected")); + new Status(Status.UNKNOWN.getCode(), "localhost:8080 can't be connected")); } @Test @@ -169,7 +169,7 @@ public class SentinelHealthIndicatorTests { assertThat(dataSourceDetailMap.get("ds1-sentinel-file-datasource")) .isEqualTo(Status.UP); assertThat(dataSourceDetailMap.get("ds2-sentinel-file-datasource")) - .isEqualTo(new Status(Status.DOWN.getCode(), "fileDataSource2 error")); + .isEqualTo(new Status(Status.UNKNOWN.getCode(), "fileDataSource2 error")); } } From 588f72a9339e130128ff6efa6d6f97f9ac63fe3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com> Date: Sun, 26 Jul 2020 22:30:35 +0800 Subject: [PATCH 06/10] add NacosRegistrationCustomizer.java --- .../NacosRegistrationCustomizerTest.java | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java new file mode 100644 index 000000000..2a6980465 --- /dev/null +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java @@ -0,0 +1,103 @@ +/* + * Copyright 2013-2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * 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.alibaba.cloud.nacos.registry; + +import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; +import com.alibaba.nacos.api.NacosFactory; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.api.support.MethodProxy; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.junit4.SpringRunner; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.Properties; + +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +/** + * @author L.cm + */ +@RunWith(PowerMockRunner.class) +@PowerMockIgnore("javax.management.*") +@PowerMockRunnerDelegate(SpringRunner.class) +@PrepareForTest({ NacosFactory.class }) +@SpringBootTest( + classes = NacosRegistrationCustomizerTest.TestConfig.class, + properties = { "spring.application.name=myTestService1", + "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848" }, + webEnvironment = RANDOM_PORT) +public class NacosRegistrationCustomizerTest { + + @Autowired + private NacosAutoServiceRegistration nacosAutoServiceRegistration; + + static { + try { + Method method = PowerMockito.method(NacosFactory.class, "createNamingService", + Properties.class); + MethodProxy.proxy(method, new InvocationHandler() { + @Override + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { + return new MockNamingService(); + } + }); + } + catch (Exception e) { + e.printStackTrace(); + } + } + + @Test + public void contextLoads() throws Exception { + NacosRegistration registration = nacosAutoServiceRegistration.getRegistration(); + Map metadata = registration.getMetadata(); + Assert.assertEquals("test1", metadata.get("test1")); + } + + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, + NacosDiscoveryClientConfiguration.class, + NacosServiceRegistryAutoConfiguration.class }) + public static class TestConfig { + + @Bean + public NacosRegistrationCustomizer nacosRegistrationCustomizer() { + return registration -> { + Map metadata = registration.getMetadata(); + metadata.put("test1", "test1"); + }; + } + } + +} From 20f0e57714cb71d25943ad00ede00db0889840e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com> Date: Sun, 26 Jul 2020 22:49:10 +0800 Subject: [PATCH 07/10] add NacosRegistrationCustomizer.java --- .../NacosRegistrationCustomizerTest.java | 97 ++++++++++--------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java index 2a6980465..139e9f812 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/registry/NacosRegistrationCustomizerTest.java @@ -16,6 +16,11 @@ package com.alibaba.cloud.nacos.registry; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.Properties; + import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; import com.alibaba.nacos.api.NacosFactory; import org.junit.Assert; @@ -27,6 +32,7 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; @@ -36,11 +42,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit4.SpringRunner; -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.Properties; - import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; /** @@ -50,54 +51,54 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen @PowerMockIgnore("javax.management.*") @PowerMockRunnerDelegate(SpringRunner.class) @PrepareForTest({ NacosFactory.class }) -@SpringBootTest( - classes = NacosRegistrationCustomizerTest.TestConfig.class, - properties = { "spring.application.name=myTestService1", - "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848" }, - webEnvironment = RANDOM_PORT) +@SpringBootTest(classes = NacosRegistrationCustomizerTest.TestConfig.class, + properties = { "spring.application.name=myTestService1", + "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848" }, + webEnvironment = RANDOM_PORT) public class NacosRegistrationCustomizerTest { - @Autowired - private NacosAutoServiceRegistration nacosAutoServiceRegistration; + @Autowired + private NacosAutoServiceRegistration nacosAutoServiceRegistration; + + static { + try { + Method method = PowerMockito.method(NacosFactory.class, "createNamingService", + Properties.class); + MethodProxy.proxy(method, new InvocationHandler() { + @Override + public Object invoke(Object proxy, Method method, Object[] args) + throws Throwable { + return new MockNamingService(); + } + }); + } + catch (Exception e) { + e.printStackTrace(); + } + } - static { - try { - Method method = PowerMockito.method(NacosFactory.class, "createNamingService", - Properties.class); - MethodProxy.proxy(method, new InvocationHandler() { - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - return new MockNamingService(); - } - }); - } - catch (Exception e) { - e.printStackTrace(); - } - } + @Test + public void contextLoads() throws Exception { + NacosRegistration registration = nacosAutoServiceRegistration.getRegistration(); + Map metadata = registration.getMetadata(); + Assert.assertEquals("test1", metadata.get("test1")); + } - @Test - public void contextLoads() throws Exception { - NacosRegistration registration = nacosAutoServiceRegistration.getRegistration(); - Map metadata = registration.getMetadata(); - Assert.assertEquals("test1", metadata.get("test1")); - } + @Configuration + @EnableAutoConfiguration + @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, + NacosDiscoveryClientConfiguration.class, + NacosServiceRegistryAutoConfiguration.class }) + public static class TestConfig { - @Configuration - @EnableAutoConfiguration - @ImportAutoConfiguration({ AutoServiceRegistrationConfiguration.class, - NacosDiscoveryClientConfiguration.class, - NacosServiceRegistryAutoConfiguration.class }) - public static class TestConfig { + @Bean + public NacosRegistrationCustomizer nacosRegistrationCustomizer() { + return registration -> { + Map metadata = registration.getMetadata(); + metadata.put("test1", "test1"); + }; + } - @Bean - public NacosRegistrationCustomizer nacosRegistrationCustomizer() { - return registration -> { - Map metadata = registration.getMetadata(); - metadata.put("test1", "test1"); - }; - } - } + } } From 8941c175ed126eb504bb87e4a29c872368c2fd1d Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Mon, 7 Sep 2020 14:31:09 +0800 Subject: [PATCH 08/10] Remove useless dependency --- .../cloud/dubbo/service/DubboMetadataServiceProxy.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java index 34468b09a..2d0bbc063 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java @@ -21,10 +21,11 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository; import com.alibaba.cloud.dubbo.metadata.repository.ServiceInstanceSelector; import com.alibaba.cloud.dubbo.util.DubboMetadataUtils; + import org.apache.dubbo.common.URL; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,7 +61,6 @@ public class DubboMetadataServiceProxy implements BeanClassLoaderAware, Disposab public DubboMetadataServiceProxy( DubboGenericServiceFactory dubboGenericServiceFactory, - DubboServiceMetadataRepository dubboServiceMetadataRepository, DubboMetadataUtils dubboMetadataUtils, ServiceInstanceSelector serviceInstanceSelector, DiscoveryClient discoveryClient) { From cea5be4bb677fe87abe74e5c9b5f69ad95c1ac04 Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Mon, 7 Sep 2020 18:20:54 +0800 Subject: [PATCH 09/10] Remove spring-cloud-starter-dubbo-gateway --- spring-cloud-alibaba-starters/pom.xml | 1 - .../pom.xml | 167 ------------------ .../gateway/DubboCloudGatewayConstants.java | 34 ---- .../gateway/DubboCloudGatewayExecutor.java | 164 ----------------- .../gateway/DubboCloudGatewayProperties.java | 57 ------ .../DubboCloudGatewayAutoConfiguration.java | 56 ------ ...boSpringCloudGatewayAutoConfiguration.java | 75 -------- .../DubboSpringCloudGatewayFilter.java | 74 -------- .../main/resources/META-INF/spring.factories | 3 - .../DubboSpringCloudGatewayBootstrap.java | 40 ----- .../src/test/resources/application.yaml | 7 - .../src/test/resources/bootstrap.yaml | 66 ------- 12 files changed, 744 deletions(-) delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/pom.xml delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayConstants.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayExecutor.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayProperties.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboCloudGatewayAutoConfiguration.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboSpringCloudGatewayAutoConfiguration.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayFilter.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/resources/META-INF/spring.factories delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayBootstrap.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/application.yaml delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/bootstrap.yaml diff --git a/spring-cloud-alibaba-starters/pom.xml b/spring-cloud-alibaba-starters/pom.xml index c3f083989..1249b019e 100644 --- a/spring-cloud-alibaba-starters/pom.xml +++ b/spring-cloud-alibaba-starters/pom.xml @@ -22,7 +22,6 @@ spring-cloud-starter-stream-rocketmq spring-cloud-starter-bus-rocketmq spring-cloud-starter-dubbo - spring-cloud-starter-dubbo-gateway spring-cloud-starter-alibaba-sidecar spring-cloud-circuitbreaker-sentinel spring-cloud-starter-alibaba-sentinel diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/pom.xml deleted file mode 100644 index 2b94e06cf..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/pom.xml +++ /dev/null @@ -1,167 +0,0 @@ - - - - - com.alibaba.cloud - spring-cloud-alibaba-starters - ${revision} - ../pom.xml - - - 4.0.0 - - spring-cloud-starter-dubbo-gateway - Spring Cloud Starter Dubbo Gateway - - - - - - org.springframework.boot - spring-boot-starter - true - - - - org.springframework.boot - spring-boot-actuator - true - - - - org.springframework.boot - spring-boot-actuator-autoconfigure - true - - - - org.springframework.boot - spring-boot-configuration-processor - true - - - - org.springframework.boot - spring-boot - true - - - - org.springframework.boot - spring-boot-autoconfigure - true - - - - - org.springframework.cloud - spring-cloud-commons - true - - - - org.springframework.cloud - spring-cloud-context - true - - - - - - - - - - - - org.springframework.cloud - spring-cloud-starter-gateway - true - - - - - com.alibaba.cloud - spring-cloud-starter-dubbo - - - - org.apache.commons - commons-lang3 - 3.11 - - - - - org.springframework - spring-test - test - - - - org.springframework.boot - spring-boot-test - test - - - - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - test - - - - - org.springframework.cloud - spring-cloud-starter-zookeeper-discovery - ${spring-cloud-zookeeper.version} - test - - - org.apache.zookeeper - zookeeper - - - - - - org.apache.zookeeper - zookeeper - 3.4.14 - test - - - org.slf4j - slf4j-log4j12 - - - - - - org.apache.curator - curator-framework - ${curator.version} - test - - - - - org.springframework.cloud - spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} - test - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - test - - - - - \ No newline at end of file diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayConstants.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayConstants.java deleted file mode 100644 index e60e8663e..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayConstants.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway; - -import com.alibaba.cloud.dubbo.util.DubboCloudConstants; - -/** - * The constants of Dubbo Cloud Gateway. - * - * @author Mercy - */ -public abstract class DubboCloudGatewayConstants { - - /** - * The property prefix of Configuration. - */ - public static final String CONFIG_PROPERTY_PREFIX = DubboCloudConstants.CONFIG_PROPERTY_PREFIX - + ".gateway"; - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayExecutor.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayExecutor.java deleted file mode 100644 index 016c7e614..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayExecutor.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway; - -import java.net.URI; -import java.util.HashMap; -import java.util.Map; - -import com.alibaba.cloud.dubbo.http.MutableHttpServerRequest; -import com.alibaba.cloud.dubbo.metadata.DubboRestServiceMetadata; -import com.alibaba.cloud.dubbo.metadata.RequestMetadata; -import com.alibaba.cloud.dubbo.metadata.RestMethodMetadata; -import com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository; -import com.alibaba.cloud.dubbo.service.DubboGenericServiceExecutionContext; -import com.alibaba.cloud.dubbo.service.DubboGenericServiceExecutionContextFactory; -import com.alibaba.cloud.dubbo.service.DubboGenericServiceFactory; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.dubbo.rpc.service.GenericException; -import org.apache.dubbo.rpc.service.GenericService; - -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.core.convert.ConversionService; -import org.springframework.format.support.DefaultFormattingConversionService; -import org.springframework.http.HttpRequest; - -import static com.alibaba.cloud.dubbo.http.util.HttpUtils.getParameters; -import static org.apache.commons.lang3.StringUtils.substringAfter; -import static org.apache.commons.lang3.StringUtils.substringBetween; -import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR; - -/** - * The executor of Dubbo Cloud Gateway that handles the HTTP request and responses the - * result of execution of the generic invocation to the Dubbo service providers. - * - * @author Mercy - * - */ -public class DubboCloudGatewayExecutor { - - private final Log logger = LogFactory.getLog(getClass()); - - private final DubboServiceMetadataRepository repository; - - private final DubboGenericServiceFactory serviceFactory; - - private final DubboGenericServiceExecutionContextFactory contextFactory; - - private final DubboCloudGatewayProperties dubboCloudGatewayProperties; - - private final ConversionService conversionService; - - private final Map dubboTranslatedAttributes = new HashMap<>(); - - public DubboCloudGatewayExecutor(DubboServiceMetadataRepository repository, - DubboGenericServiceFactory serviceFactory, - DubboGenericServiceExecutionContextFactory contextFactory, - DubboCloudGatewayProperties dubboCloudGatewayProperties, - ObjectProvider conversionService) { - this.repository = repository; - this.serviceFactory = serviceFactory; - this.contextFactory = contextFactory; - this.dubboCloudGatewayProperties = dubboCloudGatewayProperties; - this.conversionService = conversionService - .getIfAvailable(DefaultFormattingConversionService::new); - // TODO : Replace these hard-code configurations - this.dubboTranslatedAttributes.put("protocol", "dubbo"); - this.dubboTranslatedAttributes.put("cluster", "failover"); - } - - public Object execute(HttpRequest request) { - - String serviceName = resolveServiceName(request); - - String restPath = substringAfter(request.getURI().getPath(), serviceName); - - // 初始化 serviceName 的 REST 请求元数据 - repository.initializeMetadata(serviceName); - // 将 HttpServletRequest 转化为 RequestMetadata - RequestMetadata clientMetadata = buildRequestMetadata(request, restPath); - - DubboRestServiceMetadata dubboRestServiceMetadata = repository.get(serviceName, - clientMetadata); - - Object result = null; - - if (dubboRestServiceMetadata != null) { - - RestMethodMetadata dubboRestMethodMetadata = dubboRestServiceMetadata - .getRestMethodMetadata(); - - GenericService genericService = serviceFactory - .create(dubboRestServiceMetadata, dubboTranslatedAttributes); - - byte[] body = getRequestBody(request); - - MutableHttpServerRequest httpServerRequest = new MutableHttpServerRequest( - request, body); - - DubboGenericServiceExecutionContext context = contextFactory - .create(dubboRestMethodMetadata, httpServerRequest); - - GenericException exception = null; - - try { - result = genericService.$invoke(context.getMethodName(), - context.getParameterTypes(), context.getParameters()); - - String returnType = dubboRestMethodMetadata.getReturnType(); - - logger.info("The result is " + result); - - } - catch (GenericException e) { - exception = e; - } - } - - return result; - - } - - private String resolveServiceName(HttpRequest request) { - URI uri = request.getURI(); - String requestURI = uri.getPath(); - String servletPath = dubboCloudGatewayProperties.getContextPath(); - String part = substringAfter(requestURI, servletPath); - String serviceName = substringBetween(part, PATH_SEPARATOR, PATH_SEPARATOR); - return serviceName; - } - - /** - * TODO : Get the Request Body from HttpRequest. - * @param request {@link HttpRequest} - * @return - */ - private byte[] getRequestBody(HttpRequest request) { - return new byte[0]; - } - - private RequestMetadata buildRequestMetadata(HttpRequest request, String restPath) { - RequestMetadata requestMetadata = new RequestMetadata(); - requestMetadata.setPath(restPath); - requestMetadata.setMethod(request.getMethod().toString()); - requestMetadata.setParams(getParameters(request)); - requestMetadata.setHeaders(request.getHeaders()); - return requestMetadata; - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayProperties.java deleted file mode 100644 index 6ac477599..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/DubboCloudGatewayProperties.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -import static com.alibaba.cloud.dubbo.gateway.DubboCloudGatewayConstants.CONFIG_PROPERTY_PREFIX; - -/** - * The Configuration Properties for Dubbo Cloud Gateway. - * - * @author Mercy - */ -@ConfigurationProperties(prefix = CONFIG_PROPERTY_PREFIX) -public class DubboCloudGatewayProperties { - - /** - * Enabled or not. - */ - private boolean enabled = true; - - /** - * The context path for the gateway request mapping. - */ - private String contextPath = ""; - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public String getContextPath() { - return contextPath; - } - - public void setContextPath(String contextPath) { - this.contextPath = contextPath; - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboCloudGatewayAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboCloudGatewayAutoConfiguration.java deleted file mode 100644 index 81fdf2b5f..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboCloudGatewayAutoConfiguration.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway.autoconfigure; - -import com.alibaba.cloud.dubbo.autoconfigure.DubboMetadataAutoConfiguration; -import com.alibaba.cloud.dubbo.autoconfigure.DubboServiceAutoConfiguration; -import com.alibaba.cloud.dubbo.gateway.DubboCloudGatewayExecutor; -import com.alibaba.cloud.dubbo.gateway.DubboCloudGatewayProperties; -import com.alibaba.cloud.dubbo.metadata.repository.DubboServiceMetadataRepository; -import com.alibaba.cloud.dubbo.service.DubboGenericServiceExecutionContextFactory; -import com.alibaba.cloud.dubbo.service.DubboGenericServiceFactory; - -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.convert.ConversionService; - -@Configuration(proxyBeanMethods = false) -@ConditionalOnProperty(prefix = "dubbo.cloud.gateway", name = "enabled", - havingValue = "true", matchIfMissing = true) -@AutoConfigureAfter({ DubboServiceAutoConfiguration.class, - DubboMetadataAutoConfiguration.class }) -@EnableConfigurationProperties(DubboCloudGatewayProperties.class) -public class DubboCloudGatewayAutoConfiguration { - - @Bean - @ConditionalOnMissingBean(DubboCloudGatewayExecutor.class) - public DubboCloudGatewayExecutor dubboCloudGatewayExecutor( - DubboServiceMetadataRepository repository, - DubboGenericServiceFactory serviceFactory, - DubboGenericServiceExecutionContextFactory contextFactory, - DubboCloudGatewayProperties dubboCloudGatewayProperties, - ObjectProvider conversionServices) { - return new DubboCloudGatewayExecutor(repository, serviceFactory, contextFactory, - dubboCloudGatewayProperties, conversionServices); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboSpringCloudGatewayAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboSpringCloudGatewayAutoConfiguration.java deleted file mode 100644 index 3865a69aa..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/autoconfigure/DubboSpringCloudGatewayAutoConfiguration.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway.autoconfigure; - -import com.alibaba.cloud.dubbo.autoconfigure.DubboMetadataAutoConfiguration; -import com.alibaba.cloud.dubbo.autoconfigure.DubboServiceAutoConfiguration; -import com.alibaba.cloud.dubbo.gateway.DubboCloudGatewayExecutor; -import com.alibaba.cloud.dubbo.gateway.DubboCloudGatewayProperties; -import com.alibaba.cloud.dubbo.gateway.bootstrap.DubboSpringCloudGatewayFilter; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -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.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.codec.ServerCodecConfigurer; -import org.springframework.http.codec.support.DefaultServerCodecConfigurer; - -/** - * The Auto-{@link Configuration} of Dubbo Spring Cloud Gateway. - * - * @author Mercy - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass(GlobalFilter.class) -@ConditionalOnProperty(prefix = "dubbo.cloud.gateway", name = "enabled", - havingValue = "true", matchIfMissing = true) -@AutoConfigureAfter({ DubboServiceAutoConfiguration.class, - DubboMetadataAutoConfiguration.class, DubboCloudGatewayAutoConfiguration.class }) -@EnableConfigurationProperties(DubboCloudGatewayProperties.class) -public class DubboSpringCloudGatewayAutoConfiguration { - - private final Log logger = LogFactory.getLog(getClass()); - - @Bean - @ConditionalOnMissingBean(ServerCodecConfigurer.class) - public ServerCodecConfigurer serverCodecConfigurer() { - return new DefaultServerCodecConfigurer(); - } - - @Bean - public DubboSpringCloudGatewayFilter dubboSpringCloudGatewayFilter( - DubboCloudGatewayExecutor dubboCloudGatewayExecutor) { - return new DubboSpringCloudGatewayFilter(dubboCloudGatewayExecutor); - } - - @Bean - public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) { - return builder.routes() - .route(r -> r.path("/**").uri("http://localhost:9090").id("first")) - .build(); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayFilter.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayFilter.java deleted file mode 100644 index 4c352c25e..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayFilter.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway.bootstrap; - -import com.alibaba.cloud.dubbo.gateway.DubboCloudGatewayExecutor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import reactor.core.publisher.Mono; - -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.core.Ordered; -import org.springframework.http.server.reactive.ServerHttpResponse; -import org.springframework.web.server.ServerWebExchange; - -/** - * The Spring Cloud {@link GatewayFilter Gateway Filter} for Dubbo. - * - * @author Mercy - */ -public class DubboSpringCloudGatewayFilter - implements GatewayFilter, GlobalFilter, Ordered { - - private final Log logger = LogFactory.getLog(getClass()); - - private int order; - - private final DubboCloudGatewayExecutor dubboCloudGatewayExecutor; - - public DubboSpringCloudGatewayFilter( - DubboCloudGatewayExecutor dubboCloudGatewayExecutor) { - this.dubboCloudGatewayExecutor = dubboCloudGatewayExecutor; - } - - @Override - public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - - Object result = dubboCloudGatewayExecutor.execute(exchange.getRequest()); - - if (result == null) { - chain.filter(exchange); - } - else { - ServerHttpResponse response = exchange.getResponse(); - } - - return Mono.empty(); - } - - public void setOrder(int order) { - this.order = order; - } - - @Override - public int getOrder() { - return order; - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 915e8fa29..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,3 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.alibaba.cloud.dubbo.gateway.autoconfigure.DubboCloudGatewayAutoConfiguration,\ -com.alibaba.cloud.dubbo.gateway.autoconfigure.DubboSpringCloudGatewayAutoConfiguration \ No newline at end of file diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayBootstrap.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayBootstrap.java deleted file mode 100644 index b62180a7d..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/java/com/alibaba/cloud/dubbo/gateway/bootstrap/DubboSpringCloudGatewayBootstrap.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * 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.alibaba.cloud.dubbo.gateway.bootstrap; - -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; - -/** - * The bootstrap class of Dubbo Spring Cloud Gateway. - * - * @author Mercy - */ -@EnableAutoConfiguration -@EnableDiscoveryClient -public final class DubboSpringCloudGatewayBootstrap { - - private DubboSpringCloudGatewayBootstrap() { - } - - public static void main(String[] args) { - new SpringApplicationBuilder(DubboSpringCloudGatewayBootstrap.class) - .properties("spring.profiles.active=nacos").run(args); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/application.yaml b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/application.yaml deleted file mode 100644 index ef0a53a4a..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/application.yaml +++ /dev/null @@ -1,7 +0,0 @@ -dubbo: - protocols: - dubbo: - port: -1 - -server: - port: 9090 \ No newline at end of file diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/bootstrap.yaml b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/bootstrap.yaml deleted file mode 100644 index f47438672..000000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo-gateway/src/test/resources/bootstrap.yaml +++ /dev/null @@ -1,66 +0,0 @@ -spring: - application: - name: spring-cloud-alibaba-dubbo-gateway - main: - allow-bean-definition-overriding: true - - - # default disable all - cloud: - nacos: - username: nacos - password: nacos - discovery: - enabled: false - register-enabled: false - zookeeper: - enabled: false - consul: - enabled: false - -eureka: - client: - enabled: false - - ---- -spring: - profiles: nacos - - cloud: - nacos: - discovery: - enabled: true - register-enabled: true - server-addr: 127.0.0.1:8848 - - ---- -spring: - profiles: eureka - -eureka: - client: - enabled: true - service-url: - defaultZone: http://127.0.0.1:8761/eureka/ - - ---- -spring: - profiles: zookeeper - cloud: - zookeeper: - enabled: true - connect-string: 127.0.0.1:2181 - - ---- -spring: - profiles: consul - - cloud: - consul: - enabled: true - host: 127.0.0.1 - port: 8500 \ No newline at end of file From a192c17ede5c14d08217c98379e38974537d95fc Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 8 Sep 2020 09:27:44 +0800 Subject: [PATCH 10/10] Remove spring-cloud-starter-dubbo-gateway --- .../com/alibaba/cloud/nacos/NacosDiscoveryProperties.java | 8 ++++---- .../sentinel/endpoint/SentinelHealthIndicatorTests.java | 4 ++-- .../cloud/dubbo/service/DubboMetadataServiceProxy.java | 2 -- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java index 52fedfe60..acc8b2585 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/NacosDiscoveryProperties.java @@ -274,10 +274,10 @@ public class NacosDiscoveryProperties { this.namingMaintainService = createMaintainService(properties); } - @PreDestroy - public void destroy() throws NacosException { - namingService.shutDown(); - } + @PreDestroy + public void destroy() throws NacosException { + namingService.shutDown(); + } public String getEndpoint() { return endpoint; diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java index 96b7adaae..71ddb799b 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicatorTests.java @@ -110,8 +110,8 @@ public class SentinelHealthIndicatorTests { Health health = sentinelHealthIndicator.health(); assertThat(health.getStatus()).isEqualTo(Status.UNKNOWN); - assertThat(health.getDetails().get("dashboard")).isEqualTo( - new Status(Status.UNKNOWN.getCode(), "localhost:8080 can't be connected")); + assertThat(health.getDetails().get("dashboard")).isEqualTo(new Status( + Status.UNKNOWN.getCode(), "localhost:8080 can't be connected")); } @Test diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java index 2d0bbc063..ff70950d6 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/src/main/java/com/alibaba/cloud/dubbo/service/DubboMetadataServiceProxy.java @@ -23,9 +23,7 @@ import java.util.concurrent.ConcurrentHashMap; import com.alibaba.cloud.dubbo.metadata.repository.ServiceInstanceSelector; import com.alibaba.cloud.dubbo.util.DubboMetadataUtils; - import org.apache.dubbo.common.URL; - import org.slf4j.Logger; import org.slf4j.LoggerFactory;