This is an automated email from the ASF dual-hosted git repository. albumenj pushed a commit to branch 3.3 in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.3 by this push: new 31f4b3dca3 Restore accidentally deleted test cases (#14170) 31f4b3dca3 is described below commit 31f4b3dca3c92ccbaecdd84cd7b5fd10f0d869a1 Author: 王聪洋 <56506697+wcy666...@users.noreply.github.com> AuthorDate: Tue May 14 11:57:58 2024 +0800 Restore accidentally deleted test cases (#14170) * recover test unit * replace rest to tri --------- Co-authored-by: xiaosheng <songxiaosh...@apache.org> --- dubbo-config/dubbo-config-api/pom.xml | 16 +++++ .../bootstrap/DubboServiceConsumerBootstrap.java | 53 ++++++++++++++ .../bootstrap/DubboServiceProviderBootstrap.java | 82 ++++++++++++++++++++++ .../DubboServiceProviderMinimumBootstrap.java | 41 +++++++++++ .../NacosDubboServiceConsumerBootstrap.java | 58 +++++++++++++++ .../NacosDubboServiceProviderBootstrap.java | 57 +++++++++++++++ .../ZookeeperDubboServiceConsumerBootstrap.java | 59 ++++++++++++++++ .../ZookeeperDubboServiceProviderBootstrap.java | 48 +++++++++++++ .../DubboInterfaceConsumerBootstrap.java | 57 +++++++++++++++ .../apache/dubbo/config/bootstrap/rest/User.java | 72 +++++++++++++++++++ .../dubbo/config/bootstrap/rest/UserService.java | 42 +++++++++++ .../config/bootstrap/rest/UserServiceImpl.java | 29 ++++++++ .../config/bootstrap/rest/support/ContentType.java | 27 +++++++ 13 files changed, 641 insertions(+) diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml index bd7b28ed35..d6610da8b6 100644 --- a/dubbo-config/dubbo-config-api/pom.xml +++ b/dubbo-config/dubbo-config-api/pom.xml @@ -107,6 +107,22 @@ <version>${project.parent.version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>io.swagger</groupId> + <artifactId>swagger-annotations</artifactId> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>javax.ws.rs</groupId> + <artifactId>jsr311-api</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxrs</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>org.apache.dubbo</groupId> diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceConsumerBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceConsumerBootstrap.java new file mode 100644 index 0000000000..5759a2c9db --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceConsumerBootstrap.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.MetadataReportConfig; +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; + +/** + * Dubbo Provider Bootstrap + * + * @since 2.7.5 + */ +public class DubboServiceConsumerBootstrap { + + public static void main(String[] args) throws Exception { + + DubboBootstrap bootstrap = DubboBootstrap.getInstance() + .application("dubbo-consumer-demo") + .protocol(builder -> builder.port(20887).name("dubbo")) + .registry( + "zookeeper", + builder -> builder.address(ZookeeperRegistryCenterConfig.getConnectionAddress() + + "?registry-type=service&subscribed-services=dubbo-provider-demo")) + .metadataReport(new MetadataReportConfig(ZookeeperRegistryCenterConfig.getConnectionAddress())) + .reference("echo", builder -> builder.interfaceClass(EchoService.class) + .protocol("dubbo")) + .reference("user", builder -> builder.interfaceClass(UserService.class) + .protocol("tri")) + .start(); + + EchoService echoService = bootstrap.getCache().get(EchoService.class); + + for (int i = 0; i < 500; i++) { + Thread.sleep(2000L); + System.out.println(echoService.echo("Hello,World")); + } + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceProviderBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceProviderBootstrap.java new file mode 100644 index 0000000000..49d608e8a2 --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceProviderBootstrap.java @@ -0,0 +1,82 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.ApplicationConfig; +import org.apache.dubbo.config.MetadataReportConfig; +import org.apache.dubbo.config.ProtocolConfig; +import org.apache.dubbo.config.RegistryConfig; +import org.apache.dubbo.config.ServiceConfig; +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.config.bootstrap.rest.UserServiceImpl; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; + +import java.util.Arrays; + +/** + * Dubbo Provider Bootstrap + * + * @since 2.7.5 + */ +public class DubboServiceProviderBootstrap { + + public static void main(String[] args) { + multipleRegistries(); + } + + private static void multipleRegistries() { + ProtocolConfig triProtocol = new ProtocolConfig(); + triProtocol.setName("tri"); + triProtocol.setId("tri"); + triProtocol.setPort(-1); + + RegistryConfig interfaceRegistry = new RegistryConfig(); + interfaceRegistry.setId("interfaceRegistry"); + interfaceRegistry.setAddress(ZookeeperRegistryCenterConfig.getConnectionAddress()); + + RegistryConfig serviceRegistry = new RegistryConfig(); + serviceRegistry.setId("serviceRegistry"); + serviceRegistry.setAddress(ZookeeperRegistryCenterConfig.getConnectionAddress() + "?registry-type=service"); + + ServiceConfig<EchoService> echoService = new ServiceConfig<>(); + echoService.setInterface(EchoService.class.getName()); + echoService.setRef(new EchoServiceImpl()); + + ServiceConfig<UserService> userService = new ServiceConfig<>(); + userService.setInterface(UserService.class.getName()); + userService.setRef(new UserServiceImpl()); + userService.setProtocol(triProtocol); + + ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-provider-demo"); + applicationConfig.setMetadataType("remote"); + DubboBootstrap.getInstance() + .application(applicationConfig) + .registries(Arrays.asList(interfaceRegistry, serviceRegistry)) + .protocol(builder -> builder.port(-1).name("dubbo")) + .metadataReport(new MetadataReportConfig(ZookeeperRegistryCenterConfig.getConnectionAddress())) + .service(echoService) + .service(userService) + .start() + .await(); + } + + private static void testSCCallDubbo() {} + + private static void testDubboCallSC() {} + + private static void testDubboTansormation() {} +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceProviderMinimumBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceProviderMinimumBootstrap.java new file mode 100644 index 0000000000..f291f5a821 --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboServiceProviderMinimumBootstrap.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.config.bootstrap.rest.UserServiceImpl; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; + +/** + * TODO + */ +public class DubboServiceProviderMinimumBootstrap { + + public static void main(String[] args) { + DubboBootstrap.getInstance() + .application("dubbo-provider-demo") + .registry(builder -> builder.address( + ZookeeperRegistryCenterConfig.getConnectionAddress() + "?registry-type=service")) + .protocol(builder -> builder.port(-1).name("dubbo")) + .service("echo", builder -> builder.interfaceClass(EchoService.class) + .ref(new EchoServiceImpl())) + .service("user", builder -> builder.interfaceClass(UserService.class) + .ref(new UserServiceImpl())) + .start() + .await(); + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/NacosDubboServiceConsumerBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/NacosDubboServiceConsumerBootstrap.java new file mode 100644 index 0000000000..83ed228e1d --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/NacosDubboServiceConsumerBootstrap.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.ApplicationConfig; +import org.apache.dubbo.config.bootstrap.rest.UserService; + +import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE; + +/** + * Dubbo Provider Bootstrap + * + * @since 2.7.5 + */ +public class NacosDubboServiceConsumerBootstrap { + + public static void main(String[] args) throws Exception { + + ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-nacos-consumer-demo"); + applicationConfig.setMetadataType(REMOTE_METADATA_STORAGE_TYPE); + DubboBootstrap bootstrap = DubboBootstrap.getInstance() + .application(applicationConfig) + // Nacos in service registry type + .registry("nacos", builder -> builder.address("nacos://127.0.0.1:8848?registry-type=service") + .useAsConfigCenter(true) + .useAsMetadataCenter(true)) + // Nacos in traditional registry type + // .registry("nacos-traditional", builder -> builder.address("nacos://127.0.0.1:8848")) + .reference("echo", builder -> builder.interfaceClass(EchoService.class) + .protocol("dubbo")) + .reference("user", builder -> builder.interfaceClass(UserService.class) + .protocol("tri")) + .start(); + + EchoService echoService = bootstrap.getCache().get(EchoService.class); + UserService userService = bootstrap.getCache().get(UserService.class); + + for (int i = 0; i < 5; i++) { + Thread.sleep(2000L); + System.out.println(echoService.echo("Hello,World")); + System.out.println(userService.getUser(i * 1L)); + } + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/NacosDubboServiceProviderBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/NacosDubboServiceProviderBootstrap.java new file mode 100644 index 0000000000..56850af3eb --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/NacosDubboServiceProviderBootstrap.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.ApplicationConfig; +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.config.bootstrap.rest.UserServiceImpl; + +import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE; +import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY; +import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_TYPE; + +/** + * Dubbo Provider Bootstrap + * + * @since 2.7.5 + */ +public class NacosDubboServiceProviderBootstrap { + + public static void main(String[] args) { + ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-nacos-provider-demo"); + applicationConfig.setMetadataType(REMOTE_METADATA_STORAGE_TYPE); + DubboBootstrap.getInstance() + .application(applicationConfig) + // Nacos in service registry type + .registry("nacos", builder -> builder.address("nacos://127.0.0.1:8848?username=nacos&password=nacos") + .parameter(REGISTRY_TYPE_KEY, SERVICE_REGISTRY_TYPE)) + // Nacos in traditional registry type + // .registry("nacos-traditional", builder -> builder.address("nacos://127.0.0.1:8848")) + .protocol("dubbo", builder -> builder.port(20885).name("dubbo")) + .protocol("tri", builder -> builder.port(9090).name("tri")) + .service(builder -> builder.id("echo") + .interfaceClass(EchoService.class) + .ref(new EchoServiceImpl()) + .protocolIds("dubbo")) + .service(builder -> builder.id("user") + .interfaceClass(UserService.class) + .ref(new UserServiceImpl()) + .protocolIds("tri")) + .start() + .await(); + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/ZookeeperDubboServiceConsumerBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/ZookeeperDubboServiceConsumerBootstrap.java new file mode 100644 index 0000000000..25a12c8373 --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/ZookeeperDubboServiceConsumerBootstrap.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; + +import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE; +import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY; +import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_TYPE; + +/** + * Dubbo Provider Bootstrap + * + * @since 2.7.5 + */ +public class ZookeeperDubboServiceConsumerBootstrap { + + public static void main(String[] args) throws Exception { + + DubboBootstrap bootstrap = DubboBootstrap.getInstance() + .application("zookeeper-dubbo-consumer", app -> app.metadata(COMPOSITE_METADATA_STORAGE_TYPE)) + .registry("zookeeper", builder -> builder.address(ZookeeperRegistryCenterConfig.getConnectionAddress()) + .parameter(REGISTRY_TYPE_KEY, SERVICE_REGISTRY_TYPE) + .useAsConfigCenter(true) + .useAsMetadataCenter(true)) + .reference("echo", builder -> builder.interfaceClass(EchoService.class) + .protocol("dubbo") + .services("zookeeper-dubbo-provider")) + .reference("user", builder -> builder.interfaceClass(UserService.class) + .protocol("tri")) + .start(); + + EchoService echoService = bootstrap.getCache().get(EchoService.class); + UserService userService = bootstrap.getCache().get(UserService.class); + + for (int i = 0; i < 5; i++) { + Thread.sleep(2000L); + System.out.println(echoService.echo("Hello,World")); + System.out.println(userService.getUser(i * 1L)); + } + + bootstrap.stop(); + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/ZookeeperDubboServiceProviderBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/ZookeeperDubboServiceProviderBootstrap.java new file mode 100644 index 0000000000..56a2ae67e0 --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/ZookeeperDubboServiceProviderBootstrap.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap; + +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.config.bootstrap.rest.UserServiceImpl; + +import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE; +import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY; +import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_TYPE; + +/** + * TODO + */ +public class ZookeeperDubboServiceProviderBootstrap { + + public static void main(String[] args) { + DubboBootstrap.getInstance() + .application("zookeeper-dubbo-provider", app -> app.metadata(COMPOSITE_METADATA_STORAGE_TYPE)) + .registry(builder -> builder.address("127.0.0.1:2181") + .protocol("zookeeper") + .parameter(REGISTRY_TYPE_KEY, SERVICE_REGISTRY_TYPE)) + .protocol("dubbo", builder -> builder.port(-1).name("dubbo")) + .protocol("tri", builder -> builder.port(8081).name("tri")) + .service("echo", builder -> builder.interfaceClass(EchoService.class) + .ref(new EchoServiceImpl()) + .protocolIds("dubbo")) + .service("user", builder -> builder.interfaceClass(UserService.class) + .ref(new UserServiceImpl()) + .protocolIds("tri")) + .start() + .await(); + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/compatible/DubboInterfaceConsumerBootstrap.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/compatible/DubboInterfaceConsumerBootstrap.java new file mode 100644 index 0000000000..1a6c2c14c7 --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/compatible/DubboInterfaceConsumerBootstrap.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap.compatible; + +import org.apache.dubbo.config.RegistryConfig; +import org.apache.dubbo.config.bootstrap.DubboBootstrap; +import org.apache.dubbo.config.bootstrap.EchoService; +import org.apache.dubbo.config.bootstrap.rest.UserService; +import org.apache.dubbo.test.check.registrycenter.config.ZookeeperRegistryCenterConfig; + +/** + * Dubbo Provider Bootstrap + * + * @since 2.7.5 + */ +public class DubboInterfaceConsumerBootstrap { + + public static void main(String[] args) throws Exception { + RegistryConfig interfaceRegistry = new RegistryConfig(); + interfaceRegistry.setId("interfaceRegistry"); + interfaceRegistry.setAddress(ZookeeperRegistryCenterConfig.getConnectionAddress()); + + DubboBootstrap bootstrap = DubboBootstrap.getInstance() + .application("dubbo-consumer-demo") + // Zookeeper + .registry(interfaceRegistry) + .reference("echo", builder -> builder.interfaceClass(EchoService.class) + .protocol("dubbo")) + .reference("user", builder -> builder.interfaceClass(UserService.class) + .protocol("tri")) + .start() + .await(); + + EchoService echoService = bootstrap.getCache().get(EchoService.class); + UserService userService = bootstrap.getCache().get(UserService.class); + + for (int i = 0; i < 500; i++) { + Thread.sleep(2000L); + System.out.println(echoService.echo("Hello,World")); + System.out.println(userService.getUser(1L)); + } + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/User.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/User.java new file mode 100644 index 0000000000..a1586f9955 --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/User.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap.rest; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import java.io.Serializable; + +import org.codehaus.jackson.annotate.JsonProperty; + +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class User implements Serializable { + + @NotNull + @Min(1L) + private Long id; + + @JsonProperty("username") + @XmlElement(name = "username") + @NotNull + @Size(min = 6, max = 50) + private String name; + + public User() {} + + public User(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "User (" + "id=" + id + ", name='" + name + '\'' + ')'; + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/UserService.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/UserService.java new file mode 100644 index 0000000000..7e1affb53e --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/UserService.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap.rest; + +import org.apache.dubbo.config.bootstrap.rest.support.ContentType; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; + +@Path("users") +@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) +@Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8}) +@Api(value = "UserService") +public interface UserService { + + @GET + @Path("{id : \\d+}") + @ApiOperation(value = "getUser") + User getUser(@ApiParam(value = "id") @PathParam("id") Long id); +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/UserServiceImpl.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/UserServiceImpl.java new file mode 100644 index 0000000000..6d24d6206d --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/UserServiceImpl.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap.rest; + +import java.util.concurrent.atomic.AtomicLong; + +public class UserServiceImpl implements UserService { + + private final AtomicLong idGen = new AtomicLong(); + + @Override + public User getUser(Long id) { + return new User(id, "username" + id); + } +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/support/ContentType.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/support/ContentType.java new file mode 100644 index 0000000000..43795ebe0f --- /dev/null +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/rest/support/ContentType.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * + * http://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 org.apache.dubbo.config.bootstrap.rest.support; + +import javax.ws.rs.core.MediaType; + +public class ContentType { + + public static final String APPLICATION_JSON_UTF_8 = + MediaType.APPLICATION_JSON + "; " + MediaType.CHARSET_PARAMETER + "=UTF-8"; + public static final String TEXT_XML_UTF_8 = MediaType.TEXT_XML + "; " + MediaType.CHARSET_PARAMETER + "=UTF-8"; + public static final String TEXT_PLAIN_UTF_8 = MediaType.TEXT_PLAIN + "; " + MediaType.CHARSET_PARAMETER + "=UTF-8"; +}