You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ky...@apache.org on 2021/08/20 07:38:42 UTC
[dubbo] 01/02: Replace ExtensionFactory with ExtensionInjector
This is an automated email from the ASF dual-hosted git repository.
kylixs pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 7efcb572865c812dbfb51039192b7f602b69b8a3
Author: gongdewei <ky...@qq.com>
AuthorDate: Fri Aug 20 15:36:45 2021 +0800
Replace ExtensionFactory with ExtensionInjector
---
.../dubbo/common/extension/ExtensionFactory.java | 11 +++++--
...xtensionFactory.java => ExtensionInjector.java} | 10 +++---
.../dubbo/common/extension/ExtensionLoader.java | 30 ++++++++++-------
...Factory.java => AdaptiveExtensionInjector.java} | 20 ++++++------
...nsionFactory.java => SpiExtensionInjector.java} | 8 ++---
....apache.dubbo.common.extension.ExtensionFactory | 2 --
...apache.dubbo.common.extension.ExtensionInjector | 2 ++
.../dubbo/common/extension/ExtensionFactory.java | 3 +-
.../dubbo/common/extension/ExtensionTest.java | 14 ++++----
.../dubbo/common/extension/MyExtensionFactory.java | 12 +++++++
.../dubbo/config/spring/ConfigCenterBean.java | 4 +--
.../apache/dubbo/config/spring/ServiceBean.java | 8 ++---
.../DubboInfraBeanRegisterPostProcessor.java | 4 +--
...onFactory.java => SpringExtensionInjector.java} | 12 +++----
.../spring/status/DataSourceStatusChecker.java | 4 +--
.../config/spring/status/SpringStatusChecker.java | 4 +--
....apache.dubbo.common.extension.ExtensionFactory | 1 -
...apache.dubbo.common.extension.ExtensionInjector | 1 +
...yTest.java => SpringExtensionInjectorTest.java} | 22 ++++++-------
.../javaconfig/JavaConfigReferenceBeanTest.java | 38 +++++++++++-----------
.../spring/status/DataSourceStatusCheckerTest.java | 4 +--
.../spring/status/SpringStatusCheckerTest.java | 13 ++++----
dubbo-distribution/dubbo-all/pom.xml | 2 +-
dubbo-distribution/dubbo-core-spi/pom.xml | 2 +-
.../org/apache/dubbo/rpc/support/MockInvoker.java | 8 ++---
25 files changed, 134 insertions(+), 105 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
index 32bb846..6eab44d 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
@@ -18,9 +18,16 @@ package org.apache.dubbo.common.extension;
/**
* ExtensionFactory
+ * @deprecated use {@link ExtensionInjector} instead
*/
-@SPI
-public interface ExtensionFactory {
+@Deprecated
+@SPI(scope = ExtensionScope.FRAMEWORK)
+public interface ExtensionFactory extends ExtensionInjector {
+
+ @Override
+ default <T> T getInstance(Class<T> type, String name) {
+ return getExtension(type, name);
+ }
/**
* Get extension.
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionInjector.java
similarity index 81%
copy from dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
copy to dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionInjector.java
index 32bb846..c550645 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionFactory.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionInjector.java
@@ -17,18 +17,18 @@
package org.apache.dubbo.common.extension;
/**
- * ExtensionFactory
+ * An injector to provide resources for SPI extension.
*/
-@SPI
-public interface ExtensionFactory {
+@SPI(scope = ExtensionScope.FRAMEWORK)
+public interface ExtensionInjector {
/**
- * Get extension.
+ * Get instance of specify type and name.
*
* @param type object type.
* @param name object name.
* @return object instance.
*/
- <T> T getExtension(Class<T> type, String name);
+ <T> T getInstance(Class<T> type, String name);
}
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 4d30c22..feae2d4 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
@@ -98,7 +98,7 @@ public class ExtensionLoader<T> {
private final Class<?> type;
- private final ExtensionFactory objectFactory;
+ private final ExtensionInjector injector;
private final ConcurrentMap<Class<?>, String> cachedNames = new ConcurrentHashMap<>();
@@ -161,17 +161,16 @@ public class ExtensionLoader<T> {
this.extensionDirector = extensionDirector;
this.extensionPostProcessors = extensionDirector.getExtensionPostProcessors();
this.type = type;
- this.objectFactory = (type == ExtensionFactory.class ? null : extensionDirector.getExtensionLoader(ExtensionFactory.class)
+ this.injector = (type == ExtensionInjector.class ? null : extensionDirector.getExtensionLoader(ExtensionInjector.class)
.getAdaptiveExtension());
}
/**
- * @deprecated get extension loader from extension director of some module.
- *
* @see ApplicationModel#getExtensionDirector()
* @see FrameworkModel#getExtensionDirector()
* @see ModuleModel#getExtensionDirector()
* @see ExtensionDirector#getExtensionLoader(java.lang.Class)
+ * @deprecated get extension loader from extension director of some module.
*/
@Deprecated
public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) {
@@ -749,7 +748,7 @@ public class ExtensionLoader<T> {
private T injectExtension(T instance) {
- if (objectFactory == null) {
+ if (injector == null) {
return instance;
}
@@ -771,7 +770,7 @@ public class ExtensionLoader<T> {
try {
String property = getSetterProperty(method);
- Object object = objectFactory.getExtension(pt, property);
+ Object object = injector.getInstance(pt, property);
if (object != null) {
method.invoke(instance, object);
}
@@ -851,16 +850,25 @@ public class ExtensionLoader<T> {
Map<String, Class<?>> extensionClasses = new HashMap<>();
for (LoadingStrategy strategy : strategies) {
- loadDirectory(extensionClasses, strategy.directory(), type.getName(), strategy.preferExtensionClassLoader(),
- strategy.overridden(), strategy.excludedPackages());
- String oldType = this.type.getName().replace("org.apache", "com.alibaba");
- loadDirectory(extensionClasses, strategy.directory(), oldType, strategy.preferExtensionClassLoader(),
- strategy.overridden(), strategy.excludedPackages());
+ loadDirectory(extensionClasses, strategy, type.getName());
+
+ // compatible with old ExtensionFactory
+ if (this.type == ExtensionInjector.class) {
+ loadDirectory(extensionClasses, strategy, ExtensionFactory.class.getName());
+ }
}
return extensionClasses;
}
+ private void loadDirectory(Map<String, Class<?>> extensionClasses, LoadingStrategy strategy, String type) {
+ loadDirectory(extensionClasses, strategy.directory(), type, strategy.preferExtensionClassLoader(),
+ strategy.overridden(), strategy.excludedPackages());
+ String oldType = type.replace("org.apache", "com.alibaba");
+ loadDirectory(extensionClasses, strategy.directory(), oldType, strategy.preferExtensionClassLoader(),
+ strategy.overridden(), strategy.excludedPackages());
+ }
+
/**
* extract and cache default extension name if exists
*/
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionInjector.java
similarity index 69%
rename from dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java
rename to dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionInjector.java
index d136ebc..8c76f50 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/AdaptiveExtensionInjector.java
@@ -17,7 +17,7 @@
package org.apache.dubbo.common.extension.factory;
import org.apache.dubbo.common.extension.Adaptive;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
import org.apache.dubbo.common.extension.ExtensionLoader;
import java.util.ArrayList;
@@ -25,16 +25,16 @@ import java.util.Collections;
import java.util.List;
/**
- * AdaptiveExtensionFactory
+ * AdaptiveExtensionInjector
*/
@Adaptive
-public class AdaptiveExtensionFactory implements ExtensionFactory {
+public class AdaptiveExtensionInjector implements ExtensionInjector {
- private final List<ExtensionFactory> factories;
+ private final List<ExtensionInjector> factories;
- public AdaptiveExtensionFactory() {
- ExtensionLoader<ExtensionFactory> loader = ExtensionLoader.getExtensionLoader(ExtensionFactory.class);
- List<ExtensionFactory> list = new ArrayList<ExtensionFactory>();
+ public AdaptiveExtensionInjector() {
+ ExtensionLoader<ExtensionInjector> loader = ExtensionLoader.getExtensionLoader(ExtensionInjector.class);
+ List<ExtensionInjector> list = new ArrayList<ExtensionInjector>();
for (String name : loader.getSupportedExtensions()) {
list.add(loader.getExtension(name));
}
@@ -42,9 +42,9 @@ public class AdaptiveExtensionFactory implements ExtensionFactory {
}
@Override
- public <T> T getExtension(Class<T> type, String name) {
- for (ExtensionFactory factory : factories) {
- T extension = factory.getExtension(type, name);
+ public <T> T getInstance(Class<T> type, String name) {
+ for (ExtensionInjector factory : factories) {
+ T extension = factory.getInstance(type, name);
if (extension != null) {
return extension;
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionInjector.java
similarity index 86%
rename from dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java
rename to dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionInjector.java
index 46cbe19..746e3ce 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/factory/SpiExtensionInjector.java
@@ -16,17 +16,17 @@
*/
package org.apache.dubbo.common.extension.factory;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.extension.SPI;
/**
- * SpiExtensionFactory
+ * SpiExtensionInjector
*/
-public class SpiExtensionFactory implements ExtensionFactory {
+public class SpiExtensionInjector implements ExtensionInjector {
@Override
- public <T> T getExtension(Class<T> type, String name) {
+ public <T> T getInstance(Class<T> type, String name) {
if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {
ExtensionLoader<T> loader = ExtensionLoader.getExtensionLoader(type);
if (!loader.getSupportedExtensions().isEmpty()) {
diff --git a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
deleted file mode 100644
index 094382f..0000000
--- a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-adaptive=org.apache.dubbo.common.extension.factory.AdaptiveExtensionFactory
-spi=org.apache.dubbo.common.extension.factory.SpiExtensionFactory
\ No newline at end of file
diff --git a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
new file mode 100644
index 0000000..3a4e291
--- /dev/null
+++ b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
@@ -0,0 +1,2 @@
+adaptive=org.apache.dubbo.common.extension.factory.AdaptiveExtensionInjector
+spi=org.apache.dubbo.common.extension.factory.SpiExtensionInjector
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
index bc0f0b2..2a2f35f 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/common/extension/ExtensionFactory.java
@@ -16,10 +16,11 @@
*/
package com.alibaba.dubbo.common.extension;
+import org.apache.dubbo.common.extension.ExtensionScope;
import org.apache.dubbo.common.extension.SPI;
@Deprecated
-@SPI
+@SPI(scope = ExtensionScope.FRAMEWORK)
public interface ExtensionFactory extends org.apache.dubbo.common.extension.ExtensionFactory {
}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
index 2b7a5c8..b126d6a 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/ExtensionTest.java
@@ -27,13 +27,15 @@ public class ExtensionTest {
@Test
public void testExtensionFactory() {
try {
- ExtensionFactory factory = ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("myfactory");
- Assertions.assertTrue(factory instanceof ExtensionFactory);
- Assertions.assertTrue(factory instanceof com.alibaba.dubbo.common.extension.ExtensionFactory);
- Assertions.assertTrue(factory instanceof MyExtensionFactory);
+ ExtensionInjector myfactory = ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getExtension("myfactory");
+ Assertions.assertTrue(myfactory instanceof ExtensionInjector);
+ Assertions.assertTrue(myfactory instanceof ExtensionFactory);
+ Assertions.assertTrue(myfactory instanceof com.alibaba.dubbo.common.extension.ExtensionFactory);
+ Assertions.assertTrue(myfactory instanceof MyExtensionFactory);
- ExtensionFactory spring = ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("spring");
- Assertions.assertTrue(spring instanceof ExtensionFactory);
+ ExtensionInjector spring = ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getExtension("spring");
+ Assertions.assertTrue(spring instanceof ExtensionInjector);
+ Assertions.assertFalse(spring instanceof ExtensionFactory);
Assertions.assertFalse(spring instanceof com.alibaba.dubbo.common.extension.ExtensionFactory);
} catch (IllegalArgumentException expected) {
fail();
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
index f9602b4..d8bc822 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/common/extension/MyExtensionFactory.java
@@ -22,6 +22,18 @@ public class MyExtensionFactory implements ExtensionFactory {
@Override
public <T> T getExtension(Class<T> type, String name) {
+ if (type == InjectObject.class) {
+ return (T) new InjectObject(name);
+ }
return null;
}
+
+
+ public static class InjectObject {
+ private String name;
+
+ public InjectObject(String name) {
+ this.name = name;
+ }
+ }
}
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
index 84ddac5..6374cdb 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ConfigCenterBean.java
@@ -19,7 +19,7 @@ package org.apache.dubbo.config.spring;
import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.ConfigCenterConfig;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
@@ -46,7 +46,7 @@ public class ConfigCenterBean extends ConfigCenterConfig implements ApplicationC
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
- SpringExtensionFactory.addApplicationContext(applicationContext);
+ SpringExtensionInjector.addApplicationContext(applicationContext);
}
@Override
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index ca3e85c..94af84a 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -21,7 +21,7 @@ import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.config.support.Parameter;
import org.springframework.aop.support.AopUtils;
@@ -65,8 +65,8 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
- //TODO remove SpringExtensionFactory.addApplicationContext();
- SpringExtensionFactory.addApplicationContext(applicationContext);
+ //TODO remove SpringExtensionInjector.addApplicationContext();
+ SpringExtensionInjector.addApplicationContext(applicationContext);
}
@Override
@@ -126,7 +126,7 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
@Override
public void destroy() throws Exception {
// no need to call unexport() here, see
- // org.apache.dubbo.config.spring.extension.SpringExtensionFactory.ShutdownHookListener
+ // org.apache.dubbo.config.spring.extension.SpringExtensionInjector.ShutdownHookListener
}
// merged from dubbox
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
index d223ca9..f6c9b19 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/context/DubboInfraBeanRegisterPostProcessor.java
@@ -18,7 +18,7 @@ package org.apache.dubbo.config.spring.context;
import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.config.spring.util.DubboBeanUtils;
import org.apache.dubbo.config.spring.util.EnvironmentUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -83,6 +83,6 @@ public class DubboInfraBeanRegisterPostProcessor implements BeanDefinitionRegist
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
- SpringExtensionFactory.addApplicationContext(applicationContext);
+ SpringExtensionInjector.addApplicationContext(applicationContext);
}
}
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
similarity index 90%
rename from dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
rename to dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
index 27eec78..09bf0dd 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjector.java
@@ -17,7 +17,7 @@
package org.apache.dubbo.config.spring.extension;
import org.apache.dubbo.common.context.Lifecycle;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
@@ -31,10 +31,10 @@ import org.springframework.context.ConfigurableApplicationContext;
import java.util.Set;
/**
- * SpringExtensionFactory
+ * SpringExtensionInjector
*/
-public class SpringExtensionFactory implements ExtensionFactory, Lifecycle {
- private static final Logger logger = LoggerFactory.getLogger(SpringExtensionFactory.class);
+public class SpringExtensionInjector implements ExtensionInjector, Lifecycle {
+ private static final Logger logger = LoggerFactory.getLogger(SpringExtensionInjector.class);
private static final Set<ApplicationContext> CONTEXTS = new ConcurrentHashSet<ApplicationContext>();
@@ -62,9 +62,9 @@ public class SpringExtensionFactory implements ExtensionFactory, Lifecycle {
@Override
@SuppressWarnings("unchecked")
- public <T> T getExtension(Class<T> type, String name) {
+ public <T> T getInstance(Class<T> type, String name) {
- //SPI should be get from SpiExtensionFactory
+ //SPI should be get from SpiExtensionInjector
if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {
return null;
}
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
index 28323bb..c28db37 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
@@ -22,7 +22,7 @@ import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.common.status.StatusChecker;
import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.springframework.context.ApplicationContext;
@@ -45,7 +45,7 @@ public class DataSourceStatusChecker implements StatusChecker {
@Override
public Status check() {
Optional<ApplicationContext> context =
- SpringExtensionFactory.getContexts().stream().filter(Objects::nonNull).findFirst();
+ SpringExtensionInjector.getContexts().stream().filter(Objects::nonNull).findFirst();
if (!context.isPresent()) {
return new Status(Status.Level.UNKNOWN);
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
index c259a78..cae9260 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
@@ -21,7 +21,7 @@ import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.common.status.StatusChecker;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.springframework.context.ApplicationContext;
import org.springframework.context.Lifecycle;
@@ -40,7 +40,7 @@ public class SpringStatusChecker implements StatusChecker {
@Override
public Status check() {
ApplicationContext context = null;
- for (ApplicationContext c : SpringExtensionFactory.getContexts()) {
+ for (ApplicationContext c : SpringExtensionInjector.getContexts()) {
// [Issue] SpringStatusChecker execute errors on non-XML Spring configuration
// issue : https://github.com/apache/dubbo/issues/3615
if(c instanceof GenericWebApplicationContext) { // ignore GenericXmlApplicationContext
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
deleted file mode 100644
index 4ac9db2..0000000
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+++ /dev/null
@@ -1 +0,0 @@
-spring=org.apache.dubbo.config.spring.extension.SpringExtensionFactory
\ No newline at end of file
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
new file mode 100644
index 0000000..c5ef410
--- /dev/null
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
@@ -0,0 +1 @@
+spring=org.apache.dubbo.config.spring.extension.SpringExtensionInjector
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
similarity index 78%
rename from dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
rename to dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
index ca70f1f..71e98d7 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactoryTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/extension/SpringExtensionInjectorTest.java
@@ -16,7 +16,7 @@
*/
package org.apache.dubbo.config.spring.extension;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.api.DemoService;
@@ -34,9 +34,9 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
-public class SpringExtensionFactoryTest {
+public class SpringExtensionInjectorTest {
- private SpringExtensionFactory springExtensionFactory = new SpringExtensionFactory();
+ private SpringExtensionInjector springExtensionFactory = new SpringExtensionInjector();
private AnnotationConfigApplicationContext context1;
private AnnotationConfigApplicationContext context2;
@@ -44,8 +44,8 @@ public class SpringExtensionFactoryTest {
public void init() {
DubboBootstrap.reset();
- // init SpringExtensionFactory
- ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getExtension("spring");
+ // init SpringExtensionInjector
+ ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getExtension("spring");
context1 = new AnnotationConfigApplicationContext();
context1.setDisplayName("Context1");
@@ -55,28 +55,28 @@ public class SpringExtensionFactoryTest {
context2.setDisplayName("Context2");
context2.register(BeanForContext2.class);
context2.refresh();
- SpringExtensionFactory.addApplicationContext(context1);
- SpringExtensionFactory.addApplicationContext(context2);
+ SpringExtensionInjector.addApplicationContext(context1);
+ SpringExtensionInjector.addApplicationContext(context2);
}
@AfterEach
public void destroy() {
context1.close();
context2.close();
- SpringExtensionFactory.clearContexts();
+ SpringExtensionInjector.clearContexts();
}
@Test
public void testGetExtensionBySPI() {
- Protocol protocol = springExtensionFactory.getExtension(Protocol.class, "protocol");
+ Protocol protocol = springExtensionFactory.getInstance(Protocol.class, "protocol");
Assertions.assertNull(protocol);
}
@Test
public void testGetExtensionByName() {
- DemoService bean = springExtensionFactory.getExtension(DemoService.class, "bean1");
+ DemoService bean = springExtensionFactory.getInstance(DemoService.class, "bean1");
Assertions.assertNotNull(bean);
- HelloService hello = springExtensionFactory.getExtension(HelloService.class, "hello");
+ HelloService hello = springExtensionFactory.getInstance(HelloService.class, "hello");
Assertions.assertNotNull(hello);
}
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
index 805b09a..c0cec6c 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/reference/javaconfig/JavaConfigReferenceBeanTest.java
@@ -21,11 +21,11 @@ import org.apache.dubbo.config.annotation.DubboService;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
import org.apache.dubbo.config.spring.ReferenceBean;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.apache.dubbo.config.spring.registrycenter.ZooKeeperServer;
import org.apache.dubbo.config.spring.api.DemoService;
import org.apache.dubbo.config.spring.api.HelloService;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
import org.apache.dubbo.config.spring.impl.HelloServiceImpl;
import org.apache.dubbo.config.spring.reference.ReferenceBeanBuilder;
import org.apache.dubbo.rpc.service.GenericException;
@@ -71,7 +71,7 @@ public class JavaConfigReferenceBeanTest {
@Test
public void testAnnotationAtField() {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CommonConfig.class,
AnnotationAtFieldConfiguration.class);
@@ -88,7 +88,7 @@ public class JavaConfigReferenceBeanTest {
Assertions.assertEquals(HelloService.class.getName(), referenceBean.getServiceInterface());
context.close();
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
@Test
@@ -116,7 +116,7 @@ public class JavaConfigReferenceBeanTest {
@Test
public void testAnnotationBean() {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CommonConfig.class,
AnnotationBeanConfiguration.class);
@@ -133,12 +133,12 @@ public class JavaConfigReferenceBeanTest {
Assertions.assertEquals(HelloService.class.getName(), referenceBean.getServiceInterface());
context.close();
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
@Test
public void testGenericServiceAnnotationBean() {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CommonConfig.class,
GenericServiceAnnotationBeanConfiguration.class);
@@ -169,12 +169,12 @@ public class JavaConfigReferenceBeanTest {
Assertions.assertEquals("Hello Dubbo", sayHelloResult);
context.close();
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
@Test
public void testReferenceBean() {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CommonConfig.class,
ReferenceBeanConfiguration.class);
@@ -194,12 +194,12 @@ public class JavaConfigReferenceBeanTest {
Assertions.assertEquals(DemoService.class.getName(), demoServiceReferenceBean.getServiceInterface());
context.close();
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
@Test
public void testGenericServiceReferenceBean() {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CommonConfig.class,
GenericServiceReferenceBeanConfiguration.class);
@@ -221,14 +221,14 @@ public class JavaConfigReferenceBeanTest {
Assertions.assertEquals(HelloService.class.getName(), genericHelloServiceReferenceBean.getServiceInterface());
context.close();
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
@Test
public void testRawReferenceBean() {
AnnotationConfigApplicationContext context = null;
try {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
context = new AnnotationConfigApplicationContext(CommonConfig.class, ReferenceBeanWithoutGenericTypeConfiguration.class);
Assertions.fail("Should not load application");
@@ -240,7 +240,7 @@ public class JavaConfigReferenceBeanTest {
if (context != null) {
context.close();
}
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
}
@@ -249,7 +249,7 @@ public class JavaConfigReferenceBeanTest {
public void testInconsistentBean() {
AnnotationConfigApplicationContext context = null;
try {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
context = new AnnotationConfigApplicationContext(CommonConfig.class, InconsistentBeanConfiguration.class);
Assertions.fail("Should not load application");
} catch (Exception e) {
@@ -261,7 +261,7 @@ public class JavaConfigReferenceBeanTest {
if (context != null) {
context.close();
}
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
}
@@ -269,7 +269,7 @@ public class JavaConfigReferenceBeanTest {
public void testMissingGenericTypeBean() {
AnnotationConfigApplicationContext context = null;
try {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
context = new AnnotationConfigApplicationContext(CommonConfig.class, MissingGenericTypeAnnotationBeanConfiguration.class);
Assertions.fail("Should not load application");
} catch (Exception e) {
@@ -280,7 +280,7 @@ public class JavaConfigReferenceBeanTest {
if (context != null) {
context.close();
}
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
}
@@ -288,7 +288,7 @@ public class JavaConfigReferenceBeanTest {
public void testMissingInterfaceTypeBean() {
AnnotationConfigApplicationContext context = null;
try {
- Assertions.assertEquals(0, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(0, SpringExtensionInjector.getContexts().size());
context = new AnnotationConfigApplicationContext(CommonConfig.class, MissingInterfaceTypeAnnotationBeanConfiguration.class);
Assertions.fail("Should not load application");
} catch (Exception e) {
@@ -298,7 +298,7 @@ public class JavaConfigReferenceBeanTest {
if (context != null) {
context.close();
}
- Assertions.assertEquals(1, SpringExtensionFactory.getContexts().size());
+ Assertions.assertEquals(1, SpringExtensionInjector.getContexts().size());
}
}
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
index b12d2d4..36985f6 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
@@ -18,7 +18,7 @@ package org.apache.dubbo.config.spring.status;
import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -50,7 +50,7 @@ public class DataSourceStatusCheckerTest {
@BeforeEach
public void setUp() throws Exception {
- SpringExtensionFactory.clearContexts();
+ SpringExtensionInjector.clearContexts();
initMocks(this);
this.dataSourceStatusChecker = new DataSourceStatusChecker();
new ServiceBean<Object>().setApplicationContext(applicationContext);
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
index 288a0fb..d7e1a6d 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
@@ -18,12 +18,11 @@ package org.apache.dubbo.config.spring.status;
import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.extension.SpringExtensionInjector;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
@@ -52,7 +51,7 @@ public class SpringStatusCheckerTest {
@AfterEach
public void tearDown() throws Exception {
- SpringExtensionFactory.clearContexts();
+ SpringExtensionInjector.clearContexts();
Mockito.reset(applicationContext);
}
@@ -65,7 +64,7 @@ public class SpringStatusCheckerTest {
@Test
public void testWithLifeCycleRunning() {
- SpringExtensionFactory.clearContexts();
+ SpringExtensionInjector.clearContexts();
ApplicationLifeCycle applicationLifeCycle = mock(ApplicationLifeCycle.class);
new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
given(applicationLifeCycle.getConfigLocations()).willReturn(new String[]{"test1", "test2"});
@@ -79,7 +78,7 @@ public class SpringStatusCheckerTest {
@Test
public void testWithoutLifeCycleRunning() {
- SpringExtensionFactory.clearContexts();
+ SpringExtensionInjector.clearContexts();
ApplicationLifeCycle applicationLifeCycle = mock(ApplicationLifeCycle.class);
new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
given(applicationLifeCycle.isRunning()).willReturn(false);
@@ -95,9 +94,9 @@ public class SpringStatusCheckerTest {
@Test
public void testGenericWebApplicationContext() {
- SpringExtensionFactory.clearContexts();
+ SpringExtensionInjector.clearContexts();
GenericWebApplicationContext context = new GenericWebApplicationContext();
- SpringExtensionFactory.addApplicationContext(context);
+ SpringExtensionInjector.addApplicationContext(context);
SpringStatusChecker checker = new SpringStatusChecker();
Status status = checker.check();
Assertions.assertEquals(Status.Level.UNKNOWN, status.getLevel());
diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml
index be8d15d..24bde3b 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -462,7 +462,7 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+ META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
</resource>
</transformer>
<transformer
diff --git a/dubbo-distribution/dubbo-core-spi/pom.xml b/dubbo-distribution/dubbo-core-spi/pom.xml
index 7e9ee1d..0717705 100644
--- a/dubbo-distribution/dubbo-core-spi/pom.xml
+++ b/dubbo-distribution/dubbo-core-spi/pom.xml
@@ -144,7 +144,7 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
- META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory
+ META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionInjector
</resource>
</transformer>
<transformer
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
index 41a5545..f6ba4c5 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
@@ -17,7 +17,7 @@
package org.apache.dubbo.rpc.support;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionFactory;
+import org.apache.dubbo.common.extension.ExtensionInjector;
import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.utils.ArrayUtils;
import org.apache.dubbo.common.utils.ConfigUtils;
@@ -188,9 +188,9 @@ final public class MockInvoker<T> implements Invoker<T> {
mockClass = ReflectUtils.forName(mockService);
} catch (Exception e) {
if (!isDefault) {// does not check Spring bean if it is default config.
- ExtensionFactory extensionFactory =
- ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension();
- Object obj = extensionFactory.getExtension(serviceType, mockService);
+ ExtensionInjector extensionFactory =
+ ExtensionLoader.getExtensionLoader(ExtensionInjector.class).getAdaptiveExtension();
+ Object obj = extensionFactory.getInstance(serviceType, mockService);
if (obj != null) {
return obj;
}