You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by je...@apache.org on 2018/09/21 09:59:23 UTC
[incubator-dubbo] branch master updated: issue#2516: Remove
getSpringContext() from org.apache.dubbo.config.spring.ServiceBean (#2517)
This is an automated email from the ASF dual-hosted git repository.
jerrick 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 84410f7 issue#2516: Remove getSpringContext() from org.apache.dubbo.config.spring.ServiceBean (#2517)
84410f7 is described below
commit 84410f79602a561b26957dc5149f599efd44aa2b
Author: Ian Luo <ia...@gmail.com>
AuthorDate: Fri Sep 21 17:59:18 2018 +0800
issue#2516: Remove getSpringContext() from org.apache.dubbo.config.spring.ServiceBean (#2517)
---
.../java/org/apache/dubbo/config/spring/ServiceBean.java | 7 -------
.../config/spring/extension/SpringExtensionFactory.java | 4 ++++
.../dubbo/config/spring/status/DataSourceStatusChecker.java | 12 ++++++++++--
.../dubbo/config/spring/status/SpringStatusChecker.java | 12 ++++++++++--
.../config/spring/status/DataSourceStatusCheckerTest.java | 11 ++++++++++-
.../dubbo/config/spring/status/SpringStatusCheckerTest.java | 13 ++++++++++++-
6 files changed, 46 insertions(+), 13 deletions(-)
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 acdb9cd..1d5ff8e 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
@@ -50,8 +50,6 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
private static final long serialVersionUID = 213195494150089726L;
- private static transient ApplicationContext SPRING_CONTEXT;
-
private final transient Service service;
private transient ApplicationContext applicationContext;
@@ -70,15 +68,10 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
this.service = service;
}
- public static ApplicationContext getSpringContext() {
- return SPRING_CONTEXT;
- }
-
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
SpringExtensionFactory.addApplicationContext(applicationContext);
- SPRING_CONTEXT = applicationContext;
try {
Method method = applicationContext.getClass().getMethod("addApplicationListener", ApplicationListener.class); // backward compatibility to spring 2.0.1
method.invoke(applicationContext, this);
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/SpringExtensionFactory.java
index 11dd6a6..56862f3 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/SpringExtensionFactory.java
@@ -42,6 +42,10 @@ public class SpringExtensionFactory implements ExtensionFactory {
contexts.remove(context);
}
+ public static Set<ApplicationContext> getContexts() {
+ return contexts;
+ }
+
// currently for test purpose
public static void clearContexts() {
contexts.clear();
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 4766b6b..5a934be 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
@@ -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.ServiceBean;
+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
import org.springframework.context.ApplicationContext;
import javax.sql.DataSource;
@@ -41,10 +41,18 @@ public class DataSourceStatusChecker implements StatusChecker {
@Override
@SuppressWarnings("unchecked")
public Status check() {
- ApplicationContext context = ServiceBean.getSpringContext();
+ ApplicationContext context = null;
+ for (ApplicationContext c : SpringExtensionFactory.getContexts()) {
+ if (c != null) {
+ context = c;
+ break;
+ }
+ }
+
if (context == null) {
return new Status(Status.Level.UNKNOWN);
}
+
Map<String, DataSource> dataSources = context.getBeansOfType(DataSource.class, false, false);
if (dataSources == null || dataSources.size() == 0) {
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 3f7c7a7..8f4fb65 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.ServiceBean;
+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.Lifecycle;
@@ -37,10 +37,18 @@ public class SpringStatusChecker implements StatusChecker {
@Override
public Status check() {
- ApplicationContext context = ServiceBean.getSpringContext();
+ ApplicationContext context = null;
+ for (ApplicationContext c : SpringExtensionFactory.getContexts()) {
+ if (c != null) {
+ context = c;
+ break;
+ }
+ }
+
if (context == null) {
return new Status(Status.Level.UNKNOWN);
}
+
Status.Level level = Status.Level.OK;
if (context instanceof Lifecycle) {
if (((Lifecycle) context).isRunning()) {
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 ee098cd..532d97b 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,10 +18,13 @@ 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.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.springframework.context.ApplicationContext;
import javax.sql.DataSource;
@@ -51,6 +54,12 @@ public class DataSourceStatusCheckerTest {
new ServiceBean<Object>().setApplicationContext(applicationContext);
}
+ @After
+ public void tearDown() throws Exception {
+ SpringExtensionFactory.clearContexts();
+ Mockito.reset(applicationContext);
+ }
+
@Test
public void testWithoutApplicationContext() {
Status status = dataSourceStatusChecker.check();
@@ -97,4 +106,4 @@ public class DataSourceStatusCheckerTest {
assertThat(status.getLevel(), is(Status.Level.ERROR));
}
-}
\ No newline at end of file
+}
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 af151ca..66155e1 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,9 +18,12 @@ 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.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.springframework.context.ApplicationContext;
import org.springframework.context.Lifecycle;
@@ -43,6 +46,12 @@ public class SpringStatusCheckerTest {
new ServiceBean<Object>().setApplicationContext(applicationContext);
}
+ @After
+ public void tearDown() throws Exception {
+ SpringExtensionFactory.clearContexts();
+ Mockito.reset(applicationContext);
+ }
+
@Test
public void testWithoutApplicationContext() {
Status status = springStatusChecker.check();
@@ -52,6 +61,7 @@ public class SpringStatusCheckerTest {
@Test
public void testWithLifeCycleRunning() {
+ SpringExtensionFactory.clearContexts();
ApplicationLifeCycle applicationLifeCycle = mock(ApplicationLifeCycle.class);
new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
given(applicationLifeCycle.getConfigLocations()).willReturn(new String[]{"test1", "test2"});
@@ -65,6 +75,7 @@ public class SpringStatusCheckerTest {
@Test
public void testWithoutLifeCycleRunning() {
+ SpringExtensionFactory.clearContexts();
ApplicationLifeCycle applicationLifeCycle = mock(ApplicationLifeCycle.class);
new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
given(applicationLifeCycle.isRunning()).willReturn(false);
@@ -77,4 +88,4 @@ public class SpringStatusCheckerTest {
interface ApplicationLifeCycle extends Lifecycle, ApplicationContext {
String[] getConfigLocations();
}
-}
\ No newline at end of file
+}