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/02/13 02:48:26 UTC
[incubator-dubbo] branch master updated: extract method to cache
default extension name (#3456)
This is an automated email from the ASF dual-hosted git repository.
lixiaojie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new cad253a extract method to cache default extension name (#3456)
cad253a is described below
commit cad253a0d745204c617df007cd8239305a53173f
Author: wanghbxxxx <wa...@gmail.com>
AuthorDate: Wed Feb 13 10:48:19 2019 +0800
extract method to cache default extension name (#3456)
---
.../dubbo/common/extension/ExtensionLoader.java | 25 ++++++++++++++--------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index 36c7707..e47e19d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -624,6 +624,22 @@ public class ExtensionLoader<T> {
// synchronized in getExtensionClasses
private Map<String, Class<?>> loadExtensionClasses() {
+ cacheDefaultExtensionName();
+
+ Map<String, Class<?>> extensionClasses = new HashMap<>();
+ loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName());
+ loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
+ loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName());
+ loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
+ loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName());
+ loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
+ return extensionClasses;
+ }
+
+ /**
+ * extract and cache default extension name if exists
+ */
+ private void cacheDefaultExtensionName() {
final SPI defaultAnnotation = type.getAnnotation(SPI.class);
if (defaultAnnotation != null) {
String value = defaultAnnotation.value();
@@ -638,15 +654,6 @@ public class ExtensionLoader<T> {
}
}
}
-
- Map<String, Class<?>> extensionClasses = new HashMap<String, Class<?>>();
- loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName());
- loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
- loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName());
- loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
- loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName());
- loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
- return extensionClasses;
}
private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type) {