Skip to content

Commit cad253a

Browse files
wanghbxxxxlixiaojiee
authored andcommitted
extract method to cache default extension name (#3456)
1 parent 10912c8 commit cad253a

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,22 @@ private Map<String, Class<?>> getExtensionClasses() {
624624

625625
// synchronized in getExtensionClasses
626626
private Map<String, Class<?>> loadExtensionClasses() {
627+
cacheDefaultExtensionName();
628+
629+
Map<String, Class<?>> extensionClasses = new HashMap<>();
630+
loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName());
631+
loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
632+
loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName());
633+
loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
634+
loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName());
635+
loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
636+
return extensionClasses;
637+
}
638+
639+
/**
640+
* extract and cache default extension name if exists
641+
*/
642+
private void cacheDefaultExtensionName() {
627643
final SPI defaultAnnotation = type.getAnnotation(SPI.class);
628644
if (defaultAnnotation != null) {
629645
String value = defaultAnnotation.value();
@@ -638,15 +654,6 @@ private Map<String, Class<?>> loadExtensionClasses() {
638654
}
639655
}
640656
}
641-
642-
Map<String, Class<?>> extensionClasses = new HashMap<String, Class<?>>();
643-
loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName());
644-
loadDirectory(extensionClasses, DUBBO_INTERNAL_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
645-
loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName());
646-
loadDirectory(extensionClasses, DUBBO_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
647-
loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName());
648-
loadDirectory(extensionClasses, SERVICES_DIRECTORY, type.getName().replace("org.apache", "com.alibaba"));
649-
return extensionClasses;
650657
}
651658

652659
private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type) {

0 commit comments

Comments
 (0)