You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2019/07/11 05:50:20 UTC
[dubbo] branch cloud-native updated: fix compile issue and refactor
metadata structure (#4538)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch cloud-native
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/cloud-native by this push:
new fe562c3 fix compile issue and refactor metadata structure (#4538)
fe562c3 is described below
commit fe562c3feeb2261b06b4c391e2077c2fc78d1a5d
Author: cvictory <sh...@gmail.com>
AuthorDate: Thu Jul 11 13:50:08 2019 +0800
fix compile issue and refactor metadata structure (#4538)
---
dubbo-bom/pom.xml | 7 +-
.../java/com/alibaba/dubbo/common/Constants.java | 2 +-
dubbo-config/dubbo-config-api/pom.xml | 2 +-
.../dubbo-metadata-report-consul/pom.xml | 2 +-
.../store/consul/ConsulMetadataReport.java | 0
.../store/consul/ConsulMetadataReportFactory.java | 0
...che.dubbo.metadata.report.MetadataReportFactory | 0
.../dubbo-metadata-report-etcd/pom.xml | 4 +-
.../metadata/store/etcd/EtcdMetadataReport.java | 0
.../store/etcd/EtcdMetadataReportFactory.java | 0
...che.dubbo.metadata.report.MetadataReportFactory | 0
.../store/etcd/EtcdMetadata4TstService.java | 0
.../store/etcd/EtcdMetadataReportTest.java | 0
.../dubbo-metadata-report-nacos/pom.xml | 2 +-
.../metadata/store/nacos/NacosMetadataReport.java | 0
.../store/nacos/NacosMetadataReportFactory.java | 0
...che.dubbo.metadata.report.MetadataReportFactory | 0
.../store/nacos/NacosMetadata4TstService.java | 0
.../store/nacos/NacosMetadataReportTest.java | 0
.../dubbo-metadata-report-redis/pom.xml | 2 +-
.../metadata/store/redis/RedisMetadataReport.java | 0
.../store/redis/RedisMetadataReportFactory.java | 0
...che.dubbo.metadata.report.MetadataReportFactory | 0
.../store/redis/RedisMetadata4TstService.java | 0
.../store/redis/RedisMetadataReportTest.java | 0
.../dubbo-metadata-report-zookeeper/pom.xml | 2 +-
.../store/zookeeper/ZookeeperMetadataReport.java | 0
.../zookeeper/ZookeeperMetadataReportFactory.java | 0
...che.dubbo.metadata.report.MetadataReportFactory | 0
.../ZookeeperMetadataReport4TstService.java | 0
.../zookeeper/ZookeeperMetadataReportTest.java | 0
.../identifier/MetadataIdentifierTest.java | 48 ----
dubbo-metadata/dubbo-metadata-report/pom.xml | 36 ---
dubbo-metadata/pom.xml | 8 +-
dubbo-registry/dubbo-registry-api/pom.xml | 2 +-
.../registry/support/ServiceOrientedRegistry.java | 2 +-
.../apache/dubbo/registry/etcd/EtcdRegistry.java | 17 --
.../dubbo/registry/etcd/EtcdRegistryFactory.java | 17 --
.../dubbo/registry/etcd/EtcdServiceDiscovery.java | 111 ++++++++
.../registry/etcd/EtcdServiceDiscoveryFactory.java | 21 +-
.../dubbo-serialization-protobuf-json/pom.xml | 7 +-
.../protobuf/support/ProtobufTypeBuilder.java | 308 ---------------------
...e.dubbo.metadata.definition.builder.TypeBuilder | 1 -
.../protobuf/support/ProtobufTypeBuilderTest.java | 69 -----
44 files changed, 142 insertions(+), 528 deletions(-)
diff --git a/dubbo-bom/pom.xml b/dubbo-bom/pom.xml
index 202af02..a98794f 100644
--- a/dubbo-bom/pom.xml
+++ b/dubbo-bom/pom.xml
@@ -370,12 +370,7 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-definition</artifactId>
+ <artifactId>dubbo-metadata-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java
index f488c8d..f62a9bd 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/Constants.java
@@ -37,7 +37,7 @@ public class Constants implements CommonConstants,
org.apache.dubbo.rpc.protocol.dubbo.Constants,
org.apache.dubbo.common.serialize.Constants,
org.apache.dubbo.common.config.configcenter.Constants,
- org.apache.dubbo.metadata.support.Constants,
+ org.apache.dubbo.metadata.report.support.Constants ,
org.apache.dubbo.rpc.protocol.rest.Constants,
org.apache.dubbo.registry.Constants {
}
diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml
index 896feef..6e66e49 100644
--- a/dubbo-config/dubbo-config-api/pom.xml
+++ b/dubbo-config/dubbo-config-api/pom.xml
@@ -37,7 +37,7 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-api</artifactId>
+ <artifactId>dubbo-metadata-api</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/pom.xml b/dubbo-metadata/dubbo-metadata-report-consul/pom.xml
similarity index 96%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/pom.xml
rename to dubbo-metadata/dubbo-metadata-report-consul/pom.xml
index fdf0527..028d897 100644
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/pom.xml
+++ b/dubbo-metadata/dubbo-metadata-report-consul/pom.xml
@@ -18,7 +18,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-metadata-report</artifactId>
+ <artifactId>dubbo-metadata</artifactId>
<groupId>org.apache.dubbo</groupId>
<version>${revision}</version>
</parent>
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java
rename to dubbo-metadata/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java
rename to dubbo-metadata/dubbo-metadata-report-consul/src/main/java/org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory b/dubbo-metadata/dubbo-metadata-report-consul/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-consul/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
rename to dubbo-metadata/dubbo-metadata-report-consul/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/pom.xml b/dubbo-metadata/dubbo-metadata-report-etcd/pom.xml
similarity index 96%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/pom.xml
rename to dubbo-metadata/dubbo-metadata-report-etcd/pom.xml
index 56e4a38..2fc66fd 100644
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/pom.xml
+++ b/dubbo-metadata/dubbo-metadata-report-etcd/pom.xml
@@ -20,7 +20,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-metadata-report</artifactId>
+ <artifactId>dubbo-metadata</artifactId>
<groupId>org.apache.dubbo</groupId>
<version>${revision}</version>
</parent>
@@ -50,4 +50,4 @@
<scope>test</scope>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java
rename to dubbo-metadata/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java
rename to dubbo-metadata/dubbo-metadata-report-etcd/src/main/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory b/dubbo-metadata/dubbo-metadata-report-etcd/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
rename to dubbo-metadata/dubbo-metadata-report-etcd/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadata4TstService.java b/dubbo-metadata/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadata4TstService.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadata4TstService.java
rename to dubbo-metadata/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadata4TstService.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportTest.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportTest.java
rename to dubbo-metadata/dubbo-metadata-report-etcd/src/test/java/org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportTest.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/pom.xml b/dubbo-metadata/dubbo-metadata-report-nacos/pom.xml
similarity index 96%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/pom.xml
rename to dubbo-metadata/dubbo-metadata-report-nacos/pom.xml
index 95fcf15..076f75d 100644
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/pom.xml
+++ b/dubbo-metadata/dubbo-metadata-report-nacos/pom.xml
@@ -18,7 +18,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-metadata-report</artifactId>
+ <artifactId>dubbo-metadata</artifactId>
<groupId>org.apache.dubbo</groupId>
<version>${revision}</version>
</parent>
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
rename to dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java
rename to dubbo-metadata/dubbo-metadata-report-nacos/src/main/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory b/dubbo-metadata/dubbo-metadata-report-nacos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
rename to dubbo-metadata/dubbo-metadata-report-nacos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadata4TstService.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadata4TstService.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadata4TstService.java
rename to dubbo-metadata/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadata4TstService.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportTest.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportTest.java
rename to dubbo-metadata/dubbo-metadata-report-nacos/src/test/java/org/apache/dubbo/metadata/store/nacos/NacosMetadataReportTest.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/pom.xml b/dubbo-metadata/dubbo-metadata-report-redis/pom.xml
similarity index 97%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/pom.xml
rename to dubbo-metadata/dubbo-metadata-report-redis/pom.xml
index da07d27..20cf97a 100644
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/pom.xml
+++ b/dubbo-metadata/dubbo-metadata-report-redis/pom.xml
@@ -16,7 +16,7 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-metadata-report</artifactId>
+ <artifactId>dubbo-metadata</artifactId>
<groupId>org.apache.dubbo</groupId>
<version>${revision}</version>
</parent>
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
rename to dubbo-metadata/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
similarity index 100%
copy from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
copy to dubbo-metadata/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory b/dubbo-metadata/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
rename to dubbo-metadata/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadata4TstService.java b/dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadata4TstService.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadata4TstService.java
rename to dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadata4TstService.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
rename to dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/pom.xml b/dubbo-metadata/dubbo-metadata-report-zookeeper/pom.xml
similarity index 97%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/pom.xml
rename to dubbo-metadata/dubbo-metadata-report-zookeeper/pom.xml
index b84bd10..e93a39a 100644
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/pom.xml
+++ b/dubbo-metadata/dubbo-metadata-report-zookeeper/pom.xml
@@ -16,7 +16,7 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-metadata-report</artifactId>
+ <artifactId>dubbo-metadata</artifactId>
<groupId>org.apache.dubbo</groupId>
<version>${revision}</version>
</parent>
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
rename to dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java
rename to dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
rename to dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport4TstService.java b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport4TstService.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport4TstService.java
rename to dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport4TstService.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
similarity index 100%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
rename to dubbo-metadata/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/identifier/MetadataIdentifierTest.java b/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/identifier/MetadataIdentifierTest.java
deleted file mode 100644
index c660a34..0000000
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/identifier/MetadataIdentifierTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.metadata.identifier;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;
-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;
-
-/**
- * 2019/1/7
- */
-public class MetadataIdentifierTest {
-
- @Test
- public void testGetUniqueKey() {
- String interfaceName = "org.apache.dubbo.metadata.integration.InterfaceNameTestService";
- String version = "1.0.0.zk.md";
- String group = null;
- String application = "vic.zk.md";
- MetadataIdentifier providerMetadataIdentifier = new MetadataIdentifier(interfaceName, version, group, PROVIDER_SIDE, application);
- Assertions.assertEquals(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.PATH),
- "metadata" + PATH_SEPARATOR + interfaceName + PATH_SEPARATOR +
- (version == null ? "" : (version + PATH_SEPARATOR))
- + (group == null ? "" : (group + PATH_SEPARATOR)) + PROVIDER_SIDE
- + PATH_SEPARATOR + application);
- Assertions.assertEquals(providerMetadataIdentifier.getUniqueKey(MetadataIdentifier.KeyTypeEnum.UNIQUE_KEY),
- interfaceName + MetadataIdentifier.SEPARATOR +
- (version == null ? "" : version + MetadataIdentifier.SEPARATOR)
- + (group == null ? "" : group + MetadataIdentifier.SEPARATOR)
- + PROVIDER_SIDE + MetadataIdentifier.SEPARATOR + application);
- }
-}
diff --git a/dubbo-metadata/dubbo-metadata-report/pom.xml b/dubbo-metadata/dubbo-metadata-report/pom.xml
deleted file mode 100644
index 3c2fa60..0000000
--- a/dubbo-metadata/dubbo-metadata-report/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
- 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.
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>dubbo-metadata</artifactId>
- <groupId>org.apache.dubbo</groupId>
- <version>${revision}</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>dubbo-metadata-report</artifactId>
- <packaging>pom</packaging>
- <modules>
- <module>dubbo-metadata-report-zookeeper</module>
- <module>dubbo-metadata-report-redis</module>
- <module>dubbo-metadata-report-consul</module>
- <module>dubbo-metadata-report-etcd</module>
- <module>dubbo-metadata-report-nacos</module>
- </modules>
-
-
-</project>
diff --git a/dubbo-metadata/pom.xml b/dubbo-metadata/pom.xml
index 2115c45..2c8bb6b 100644
--- a/dubbo-metadata/pom.xml
+++ b/dubbo-metadata/pom.xml
@@ -29,7 +29,11 @@
<packaging>pom</packaging>
<modules>
<module>dubbo-metadata-api</module>
- <module>dubbo-metadata-report</module>
+ <module>dubbo-metadata-report-zookeeper</module>
+ <module>dubbo-metadata-report-redis</module>
+ <module>dubbo-metadata-report-consul</module>
+ <module>dubbo-metadata-report-etcd</module>
+ <module>dubbo-metadata-report-nacos</module>
</modules>
-</project>
\ No newline at end of file
+</project>
diff --git a/dubbo-registry/dubbo-registry-api/pom.xml b/dubbo-registry/dubbo-registry-api/pom.xml
index 7ae8b75..86583e2 100644
--- a/dubbo-registry/dubbo-registry-api/pom.xml
+++ b/dubbo-registry/dubbo-registry-api/pom.xml
@@ -69,7 +69,7 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-api</artifactId>
+ <artifactId>dubbo-metadata-api</artifactId>
<version>${project.parent.version}</version>
</dependency>
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ServiceOrientedRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ServiceOrientedRegistry.java
index 14ad358..8018eff 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ServiceOrientedRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ServiceOrientedRegistry.java
@@ -62,7 +62,7 @@ import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoad
import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;
import static org.apache.dubbo.common.utils.CollectionUtils.isNotEmpty;
import static org.apache.dubbo.common.utils.StringUtils.isBlank;
-import static org.apache.dubbo.metadata.support.Constants.METADATA_REPORT_KEY;
+import static org.apache.dubbo.metadata.report.support.Constants.METADATA_REPORT_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getExportedServicesRevision;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceURLsParams;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getProviderHost;
diff --git a/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistry.java b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistry.java
index 44a347c..a15d7d5 100644
--- a/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistry.java
+++ b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistry.java
@@ -14,23 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/*
- * 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.registry.etcd;
import org.apache.dubbo.common.URL;
diff --git a/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java
index 187da19..a7d00b3 100644
--- a/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java
+++ b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java
@@ -14,23 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/*
- * 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.registry.etcd;
import org.apache.dubbo.common.URL;
diff --git a/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
new file mode 100644
index 0000000..60075d4
--- /dev/null
+++ b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
@@ -0,0 +1,111 @@
+/*
+ * 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.registry.etcd;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.ConcurrentHashSet;
+import org.apache.dubbo.event.EventListener;
+import org.apache.dubbo.registry.NotifyListener;
+import org.apache.dubbo.registry.client.ServiceDiscovery;
+import org.apache.dubbo.registry.client.ServiceInstance;
+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;
+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
+import org.apache.dubbo.remoting.etcd.ChildListener;
+import org.apache.dubbo.remoting.etcd.EtcdTransporter;
+
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * @author cvictory ON 2019-07-08
+ */
+public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<ServiceInstancesChangedEvent> {
+
+ private final static Logger logger = LoggerFactory.getLogger(EtcdServiceDiscovery.class);
+
+// private final String root;
+
+ private final Set<String> anyServices = new ConcurrentHashSet<>();
+
+ private final ConcurrentMap<URL, ConcurrentMap<NotifyListener, ChildListener>> etcdListeners = new ConcurrentHashMap<>();
+// private final EtcdClient etcdClient;
+
+ public EtcdServiceDiscovery(URL url, EtcdTransporter etcdTransporter) {
+// if (url.isAnyHost()) {
+// throw new IllegalStateException("Service discovery address is invalid, actual: '" + url.getHost() + "'");
+// }
+//// String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);
+// if (!group.startsWith(PATH_SEPARATOR)) {
+// group = PATH_SEPARATOR + group;
+// }
+// this.root = group;
+// etcdClient = etcdTransporter.connect(url);
+//
+// etcdClient.addStateListener(state -> {
+// if (state == StateListener.CONNECTED) {
+// try {
+//// recover();
+// } catch (Exception e) {
+// logger.error(e.getMessage(), e);
+// }
+// }
+// });
+ }
+
+ @Override
+ public void onEvent(ServiceInstancesChangedEvent event) {
+
+ }
+
+ @Override
+ public void start() {
+
+ }
+
+ @Override
+ public void stop() {
+
+ }
+
+ @Override
+ public void register(ServiceInstance serviceInstance) throws RuntimeException {
+
+ }
+
+ @Override
+ public void update(ServiceInstance serviceInstance) throws RuntimeException {
+
+ }
+
+ @Override
+ public void unregister(ServiceInstance serviceInstance) throws RuntimeException {
+
+ }
+
+ @Override
+ public Set<String> getServices() {
+ return null;
+ }
+
+ @Override
+ public void addServiceInstancesChangedListener(String serviceName, ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {
+
+ }
+}
diff --git a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscoveryFactory.java
similarity index 58%
rename from dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
rename to dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscoveryFactory.java
index bd08877..fced9ba 100644
--- a/dubbo-metadata/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
+++ b/dubbo-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscoveryFactory.java
@@ -14,21 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.metadata.store.redis;
+package org.apache.dubbo.registry.etcd;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.metadata.report.MetadataReport;
-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;
+import org.apache.dubbo.registry.client.ServiceDiscovery;
+import org.apache.dubbo.registry.client.ServiceDiscoveryFactory;
+import org.apache.dubbo.remoting.etcd.EtcdTransporter;
/**
- * RedisMetadataReportFactory.
+ * @author cvictory ON 2019-07-08
*/
-public class RedisMetadataReportFactory extends AbstractMetadataReportFactory {
+public class EtcdServiceDiscoveryFactory implements ServiceDiscoveryFactory {
+ private EtcdTransporter etcdTransporter;
- @Override
- public MetadataReport createMetadataReport(URL url) {
- return new RedisMetadataReport(url);
+ public void setEtcdTransporter(EtcdTransporter etcdTransporter) {
+ this.etcdTransporter = etcdTransporter;
}
+ @Override
+ public ServiceDiscovery create(URL connectionURL) {
+ return new EtcdServiceDiscovery(connectionURL, etcdTransporter);
+ }
}
diff --git a/dubbo-serialization/dubbo-serialization-protobuf-json/pom.xml b/dubbo-serialization/dubbo-serialization-protobuf-json/pom.xml
index 75b290b..b0788e1 100644
--- a/dubbo-serialization/dubbo-serialization-protobuf-json/pom.xml
+++ b/dubbo-serialization/dubbo-serialization-protobuf-json/pom.xml
@@ -42,10 +42,5 @@ limitations under the License.
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-definition</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/dubbo-serialization/dubbo-serialization-protobuf-json/src/main/java/org/apache/dubbo/common/serialize/protobuf/support/ProtobufTypeBuilder.java b/dubbo-serialization/dubbo-serialization-protobuf-json/src/main/java/org/apache/dubbo/common/serialize/protobuf/support/ProtobufTypeBuilder.java
deleted file mode 100644
index 75fcc5f..0000000
--- a/dubbo-serialization/dubbo-serialization-protobuf-json/src/main/java/org/apache/dubbo/common/serialize/protobuf/support/ProtobufTypeBuilder.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * 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.common.serialize.protobuf.support;
-
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;
-import org.apache.dubbo.metadata.definition.builder.TypeBuilder;
-import org.apache.dubbo.metadata.definition.model.TypeDefinition;
-
-import com.google.protobuf.ByteString;
-import com.google.protobuf.Descriptors;
-import com.google.protobuf.GeneratedMessageV3;
-import com.google.protobuf.ProtocolStringList;
-import com.google.protobuf.UnknownFieldSet;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class ProtobufTypeBuilder implements TypeBuilder {
- private final Logger logger = LoggerFactory.getLogger(getClass());
- private static final Pattern MAP_PATTERN = Pattern.compile("^java\\.util\\.Map<(\\S+), (\\S+)>$");
- private static final Pattern LIST_PATTERN = Pattern.compile("^java\\.util\\.List<(\\S+)>$");
- private static final List<String> list = null;
- /**
- * provide a List<String> type for TypeDefinitionBuilder.build(type,class,cache)
- * "repeated string" transform to ProtocolStringList, should be build as List<String> type.
- */
- private static Type STRING_LIST_TYPE;
-
- static {
- try {
- STRING_LIST_TYPE = ProtobufTypeBuilder.class.getDeclaredField("list").getGenericType();
- } catch (NoSuchFieldException e) {
- // do nothing
- }
- }
-
- @Override
- public boolean accept(Type type, Class<?> clazz) {
- if (clazz == null) {
- return false;
- }
-
- return GeneratedMessageV3.class.isAssignableFrom(clazz);
- }
-
- @Override
- public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {
- TypeDefinition typeDefinition = new TypeDefinition(clazz.getName());
- try {
- GeneratedMessageV3.Builder builder = getMessageBuilder(clazz);
- typeDefinition = buildProtobufTypeDefinition(clazz, builder, typeCache);
- } catch (Exception e) {
- logger.info("TypeDefinition build failed.", e);
- }
-
- return typeDefinition;
- }
-
- private GeneratedMessageV3.Builder getMessageBuilder(Class<?> requestType) throws Exception {
- Method method = requestType.getMethod("newBuilder");
- return (GeneratedMessageV3.Builder) method.invoke(null, null);
- }
-
- private TypeDefinition buildProtobufTypeDefinition(Class<?> clazz, GeneratedMessageV3.Builder builder, Map<Class<?>, TypeDefinition> typeCache) {
- TypeDefinition typeDefinition = new TypeDefinition(clazz.getName());
- if (builder == null) {
- return typeDefinition;
- }
-
- Map<String, TypeDefinition> properties = new HashMap<>();
- Method[] methods = builder.getClass().getDeclaredMethods();
- for (Method method : methods) {
- String methodName = method.getName();
-
- if (isSimplePropertySettingMethod(method)) {
- // property of custom type or primitive type
- properties.put(generateSimpleFiledName(methodName), TypeDefinitionBuilder.build(method.getGenericParameterTypes()[0], method.getParameterTypes()[0], typeCache));
- } else if (isMapPropertySettingMethod(method)) {
- // property of map
- Type type = method.getGenericParameterTypes()[0];
- String fieldName = generateMapFieldName(methodName);
- validateMapType(fieldName, type.toString());
- properties.put(fieldName, TypeDefinitionBuilder.build(type, method.getParameterTypes()[0], typeCache));
- } else if (isListPropertySettingMethod(method)) {
- // property of list
- Type type = method.getGenericReturnType();
- String fieldName = generateListFieldName(methodName);
- validateListType(fieldName, type.toString());
- TypeDefinition td;
- if (ProtocolStringList.class.isAssignableFrom(method.getReturnType())) {
- // property defined as "repeated string" transform to ProtocolStringList,
- // should be build as List<String>.
- td = TypeDefinitionBuilder.build(STRING_LIST_TYPE, List.class, typeCache);
- } else {
- td = TypeDefinitionBuilder.build(type, method.getReturnType(), typeCache);
- }
- properties.put(fieldName, td);
- }
- }
- typeDefinition.setProperties(properties);
- typeCache.put(clazz, typeDefinition);
- return typeDefinition;
- }
-
- /**
- * 1. Unsupported List with value type is Bytes <br/>
- * Bytes is a primitive type in Proto, transform to ByteString.class in java<br/>
- *
- * @param fieldName
- * @param typeName
- * @return
- */
- private void validateListType(String fieldName, String typeName) {
- Matcher matcher = LIST_PATTERN.matcher(typeName);
- if (!matcher.matches()) {
- throw new IllegalArgumentException("List protobuf property " + fieldName + "of Type " +
- typeName + " can't be parsed.The type name should mathch[" + LIST_PATTERN.toString() + "].");
- }
-
- if (ByteString.class.getName().equals(matcher.group(1))) {
- throw new IllegalArgumentException("List protobuf property " + fieldName + "of Type " +
- typeName + " can't be parsed.List of ByteString is not supported.");
- }
- }
-
- /**
- * 1. Unsupported Map with value type is Bytes <br/>
- * 2. Unsupported Map with key type is not String <br/>
- * Bytes is a primitive type in Proto, transform to ByteString.class in java<br/>
- *
- * @param fieldName
- * @param typeName
- * @return
- */
- private void validateMapType(String fieldName, String typeName) {
- Matcher matcher = MAP_PATTERN.matcher(typeName);
- if (!matcher.matches()) {
- throw new IllegalArgumentException("Map protobuf property " + fieldName + "of Type " +
- typeName + " can't be parsed.The type name should mathch[" + MAP_PATTERN.toString() + "].");
- }
-
- if (!String.class.getName().equals(matcher.group(1)) || ByteString.class.getName().equals(matcher.group(2))) {
- throw new IllegalArgumentException("Map protobuf property " + fieldName + "of Type " +
- typeName + " can't be parsed.Map with unString key or ByteString value is not supported.");
- }
- }
-
- /**
- * get unCollection unMap property name from setting method.<br/>
- * ex:setXXX();<br/>
- *
- * @param methodName
- * @return
- */
- private String generateSimpleFiledName(String methodName) {
- return toCamelCase(methodName.substring(3));
- }
-
- /**
- * get map property name from setting method.<br/>
- * ex: putAllXXX();<br/>
- *
- * @param methodName
- * @return
- */
- private String generateMapFieldName(String methodName) {
- return toCamelCase(methodName.substring(6));
- }
-
- /**
- * get list property name from setting method.<br/>
- * ex: getXXXList()<br/>
- *
- * @param methodName
- * @return
- */
- private String generateListFieldName(String methodName) {
- return toCamelCase(methodName.substring(3, methodName.length() - 4));
- }
-
-
- private String toCamelCase(String nameString) {
- char[] chars = nameString.toCharArray();
- chars[0] = Character.toLowerCase(chars[0]);
- return new String(chars);
- }
-
- /**
- * judge custom type or primitive type property<br/>
- * 1. proto3 grammar ex: string name = 1 <br/>
- * 2. proto3 grammar ex: optional string name =1 <br/>
- * generated setting method setNameValue(String name);
- *
- * @param method
- * @return
- */
- private boolean isSimplePropertySettingMethod(Method method) {
- String methodName = method.getName();
- Class<?>[] types = method.getParameterTypes();
-
- if (!methodName.startsWith("set") || types.length != 1) {
- return false;
- }
-
- // filter general setting method
- // 1. - setUnknownFields( com.google.protobuf.UnknownFieldSet unknownFields)
- // 2. - setField(com.google.protobuf.Descriptors.FieldDescriptor field,java.lang.Object value)
- // 3. - setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field,int index,java.lang.Object value)
- if (methodName.equals("setField") && types[0].equals(Descriptors.FieldDescriptor.class)
- || methodName.equals("setUnknownFields") && types[0].equals(UnknownFieldSet.class)
- || methodName.equals("setRepeatedField") && types[0].equals(Descriptors.FieldDescriptor.class)) {
- return false;
- }
-
- // String property has two setting method.
- // skip setXXXBytes(com.google.protobuf.ByteString value)
- // parse setXXX(String string)
- if (methodName.endsWith("Bytes") && types[0].equals(ByteString.class)) {
- return false;
- }
-
- // Protobuf property has two setting method.
- // skip setXXX(com.google.protobuf.Builder value)
- // parse setXXX(com.google.protobuf.Message value)
- if (GeneratedMessageV3.Builder.class.isAssignableFrom(types[0])) {
- return false;
- }
-
- // Enum property has two setting method.
- // skip setXXX(int value)
- // parse setXXX(SomeEnum value)
- if (methodName.endsWith("Value") && types[0] == int.class) {
- return false;
- }
-
- return true;
- }
-
-
- /**
- * judge List property</br>
- * proto3 grammar ex: repeated string names; </br>
- * generated setting method:List<String> getNamesList()
- *
- * @param method
- * @return
- */
- boolean isListPropertySettingMethod(Method method) {
- String methodName = method.getName();
- Class<?> type = method.getReturnType();
-
-
- if (!methodName.startsWith("get") || !methodName.endsWith("List")) {
- return false;
- }
-
- // skip the setting method with Pb entity builder as parameter
- if (methodName.endsWith("BuilderList")) {
- return false;
- }
-
- // if field name end with List, should skip
- if (!List.class.isAssignableFrom(type)) {
- return false;
- }
-
- return true;
- }
-
- /**
- * judge map property</br>
- * proto3 grammar : map<string,string> card = 1; </br>
- * generated setting method: putAllCards(java.util.Map<String, string> values) </br>
- *
- * @param methodTemp
- * @return
- */
- private boolean isMapPropertySettingMethod(Method methodTemp) {
- String methodName = methodTemp.getName();
- Class[] parameters = methodTemp.getParameterTypes();
- if (methodName.startsWith("putAll") && parameters.length == 1 && Map.class.isAssignableFrom(parameters[0])) {
- return true;
- }
-
- return false;
- }
-}
diff --git a/dubbo-serialization/dubbo-serialization-protobuf-json/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder b/dubbo-serialization/dubbo-serialization-protobuf-json/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
deleted file mode 100644
index 97795f2..0000000
--- a/dubbo-serialization/dubbo-serialization-protobuf-json/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
+++ /dev/null
@@ -1 +0,0 @@
-protobuf=org.apache.dubbo.common.serialize.protobuf.support.ProtobufTypeBuilder
\ No newline at end of file
diff --git a/dubbo-serialization/dubbo-serialization-test/src/test/java/org/apache/dubbo/common/serialize/protobuf/support/ProtobufTypeBuilderTest.java b/dubbo-serialization/dubbo-serialization-test/src/test/java/org/apache/dubbo/common/serialize/protobuf/support/ProtobufTypeBuilderTest.java
deleted file mode 100644
index 0d59c08..0000000
--- a/dubbo-serialization/dubbo-serialization-test/src/test/java/org/apache/dubbo/common/serialize/protobuf/support/ProtobufTypeBuilderTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.common.serialize.protobuf.support;
-
-import org.apache.dubbo.common.serialize.protobuf.support.model.ServiceInterface;
-import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;
-import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
-import org.apache.dubbo.metadata.definition.model.MethodDefinition;
-import org.apache.dubbo.metadata.definition.model.TypeDefinition;
-
-import org.junit.jupiter.api.Test;
-
-import java.util.Map;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-
-public class ProtobufTypeBuilderTest {
- @Test
- public void testProtobufBuilder() {
- // TEST Pb Service metaData builder
- FullServiceDefinition serviceDefinition = ServiceDefinitionBuilder.buildFullDefinition(ServiceInterface.class);
- MethodDefinition methodDefinition = serviceDefinition.getMethods().get(0);
- String parameterName = methodDefinition.getParameterTypes()[0];
- TypeDefinition typeDefinition = null;
- for (TypeDefinition type : serviceDefinition.getTypes()) {
- if (parameterName.equals(type.getType())) {
- typeDefinition = type;
- break;
- }
- }
- Map<String, TypeDefinition> propertiesMap = typeDefinition.getProperties();
- assertThat(propertiesMap.size(), is(9));
- assertThat(propertiesMap.containsKey("money"), is(true));
- assertThat(propertiesMap.get("money").getType(), equalTo("double"));
- assertThat(propertiesMap.containsKey("cash"), is(true));
- assertThat(propertiesMap.get("cash").getType(), equalTo("float"));
- assertThat(propertiesMap.containsKey("age"), is(true));
- assertThat(propertiesMap.get("age").getType(), equalTo("int"));
- assertThat(propertiesMap.containsKey("num"), is(true));
- assertThat(propertiesMap.get("num").getType(), equalTo("long"));
- assertThat(propertiesMap.containsKey("sex"), is(true));
- assertThat(propertiesMap.get("sex").getType(), equalTo("boolean"));
- assertThat(propertiesMap.containsKey("name"), is(true));
- assertThat(propertiesMap.get("name").getType(), equalTo("java.lang.String"));
- assertThat(propertiesMap.containsKey("msg"), is(true));
- assertThat(propertiesMap.get("msg").getType(), equalTo("com.google.protobuf.ByteString"));
- assertThat(propertiesMap.containsKey("phone"), is(true));
- assertThat(propertiesMap.get("phone").getType(), equalTo("java.util.List<org.apache.dubbo.common.serialize.protobuf.support.model.GooglePB$PhoneNumber>"));
- assertThat(propertiesMap.containsKey("doubleMap"), is(true));
- assertThat(propertiesMap.get("doubleMap").getType(), equalTo("java.util.Map<java.lang.String, org.apache.dubbo.common.serialize.protobuf.support.model.GooglePB$PhoneNumber>"));
- }
-}