This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0-metadata-refactor by this 
push:
     new 22e7816  fix metadata initialization
22e7816 is described below

commit 22e7816c493edc424beb1fa48ebbe58d9d14ee18
Author: ken.lj <[email protected]>
AuthorDate: Mon Nov 8 14:48:06 2021 +0800

    fix metadata initialization
---
 .../apache/dubbo/metadata/definition/TypeDefinitionBuilder.java  | 9 ++++-----
 .../apache/dubbo/metadata/definition/builder/TypeBuilder.java    | 3 ++-
 .../src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java | 5 +++++
 .../org.apache.dubbo.metadata.definition.builder.TypeBuilder     | 0
 .../java/org/apache/dubbo/metadata/definition/MetadataTest.java  | 7 +++++++
 .../org.apache.dubbo.metadata.definition.builder.TypeBuilder     | 0
 .../test/java/org/apache/dubbo/metadata/MetadataInfoTest.java    | 6 +++---
 7 files changed, 21 insertions(+), 9 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
index b2758e3..d3029b0 100755
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java
@@ -16,13 +16,13 @@
  */
 package org.apache.dubbo.metadata.definition;
 
-import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.ClassUtils;
 import org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder;
 import org.apache.dubbo.metadata.definition.builder.TypeBuilder;
 import org.apache.dubbo.metadata.definition.model.TypeDefinition;
+import org.apache.dubbo.rpc.model.FrameworkModel;
 
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -37,11 +37,10 @@ import java.util.Set;
  */
 public class TypeDefinitionBuilder {
     private static final Logger logger = 
LoggerFactory.getLogger(TypeDefinitionBuilder.class);
-    static final List<TypeBuilder> BUILDERS;
+    public static List<TypeBuilder> BUILDERS;
 
-    static {
-        ExtensionLoader<TypeBuilder> extensionLoader = 
ExtensionLoader.getExtensionLoader(TypeBuilder.class);
-        Set<TypeBuilder> tbs = 
extensionLoader.getSupportedExtensionInstances();
+    public static void initBuilders(FrameworkModel model) {
+        Set<TypeBuilder> tbs = 
model.getExtensionLoader(TypeBuilder.class).getSupportedExtensionInstances();
         BUILDERS = new ArrayList<>(tbs);
     }
 
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
index 050de3c..8a8f830 100755
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/metadata/definition/builder/TypeBuilder.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dubbo.metadata.definition.builder;
 
+import org.apache.dubbo.common.extension.ExtensionScope;
 import org.apache.dubbo.common.extension.SPI;
 import org.apache.dubbo.common.lang.Prioritized;
 import org.apache.dubbo.metadata.definition.model.TypeDefinition;
@@ -26,7 +27,7 @@ import java.util.Map;
 /**
  * 2015/1/27.
  */
-@SPI
+@SPI(scope = ExtensionScope.FRAMEWORK)
 public interface TypeBuilder extends Prioritized {
 
     /**
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java 
b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
index 0da272a..536b5be 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.resource.GlobalResourcesRepository;
 import org.apache.dubbo.common.utils.Assert;
 import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -65,6 +66,7 @@ public class FrameworkModel extends ScopeModel {
 
     public FrameworkModel() {
         super(null, ExtensionScope.FRAMEWORK);
+
         this.setInternalId(index.getAndIncrement()+"");
         // register FrameworkModel instance early
         synchronized (globalLock) {
@@ -80,6 +82,9 @@ public class FrameworkModel extends ScopeModel {
     @Override
     protected void initialize() {
         super.initialize();
+
+        TypeDefinitionBuilder.initBuilders(this);
+
         serviceRepository = new FrameworkServiceRepository(this);
 
         ExtensionLoader<ScopeModelInitializer> initializerExtensionLoader = 
this.getExtensionLoader(ScopeModelInitializer.class);
diff --git 
a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
 
b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
similarity index 100%
rename from 
dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
rename to 
dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
diff --git 
a/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
 
b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
index a75be44..ee59c62 100644
--- 
a/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
+++ 
b/dubbo-common/src/test/java/org/apache/dubbo/metadata/definition/MetadataTest.java
@@ -23,9 +23,11 @@ import 
org.apache.dubbo.metadata.definition.common.ResultWithRawCollections;
 import org.apache.dubbo.metadata.definition.common.TestService;
 import org.apache.dubbo.metadata.definition.model.ServiceDefinition;
 import org.apache.dubbo.metadata.definition.model.TypeDefinition;
+import org.apache.dubbo.rpc.model.FrameworkModel;
 
 import com.google.gson.Gson;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -35,6 +37,11 @@ import org.junit.jupiter.api.Test;
  */
 public class MetadataTest {
 
+    @BeforeAll
+    public static void setup() {
+        TypeDefinitionBuilder.initBuilders(FrameworkModel.defaultModel());
+    }
+
     /**
      *
      */
diff --git 
a/dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
 
b/dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
similarity index 100%
rename from 
dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
rename to 
dubbo-common/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder
diff --git 
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
 
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
index 1f78062..4a8cc31 100644
--- 
a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
+++ 
b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/MetadataInfoTest.java
@@ -127,14 +127,14 @@ public class MetadataInfoTest {
         MetadataInfo metadataInfo = new MetadataInfo("demo");
 
         // export normal url again
-        metadataInfo.addService(new MetadataInfo.ServiceInfo(url));
+        metadataInfo.addService(url);
         Gson gson = new Gson();
        System.out.println(gson.toJson(metadataInfo));
 
         MetadataInfo metadataInfo2 = new MetadataInfo("demo");
         // export normal url again
-        metadataInfo2.addService(new MetadataInfo.ServiceInfo(url));
-        metadataInfo2.addService(new MetadataInfo.ServiceInfo(url2));
+        metadataInfo2.addService(url);
+        metadataInfo2.addService(url2);
         System.out.println(gson.toJson(metadataInfo2));
 
     }

Reply via email to