You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/01/10 07:38:33 UTC

[incubator-servicecomb-java-chassis] 09/13: SCB-166 rebase and fix pr comment

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

wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 4eaf6cda32717c07d29fa210593859989e95f69e
Author: zhengyangyong <ya...@huawei.com>
AuthorDate: Tue Jan 9 16:37:57 2018 +0800

    SCB-166 rebase and fix pr comment
    
    Signed-off-by: zhengyangyong <ya...@huawei.com>
---
 .../core/publish/DefaultHealthCheckerManager.java  |  17 +-
 .../metrics/core/TestHealthCheckerManager.java     | 221 +--------------------
 .../SomeServiceWithHealthCheckerManager.java       |  36 ++++
 3 files changed, 53 insertions(+), 221 deletions(-)

diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java
index 667b02a..71e9f1a 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultHealthCheckerManager.java
@@ -19,6 +19,7 @@ package io.servicecomb.metrics.core.publish;
 
 import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
@@ -27,7 +28,6 @@ import java.util.stream.Collectors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Component;
 
 import io.servicecomb.metrics.common.HealthCheckResult;
@@ -42,20 +42,15 @@ public class DefaultHealthCheckerManager implements HealthCheckerManager {
 
   private final Map<String, HealthChecker> healthCheckers;
 
-  private ApplicationContext context;
-
-  @Autowired
-  public DefaultHealthCheckerManager(ApplicationContext context) {
-    this.context = context;
+  @Autowired(required = false)
+  public DefaultHealthCheckerManager(List<HealthChecker> springHealthCheckers) {
     this.healthCheckers = new ConcurrentHashMap<>();
     HealthChecker defaultHealthChecker = new DefaultMicroserviceHealthChecker();
     this.healthCheckers.put(defaultHealthChecker.getName(), defaultHealthChecker);
 
-    for (String beanName : context.getBeanDefinitionNames()) {
-      Class<?> beanClass = context.getType(beanName);
-      if (HealthChecker.class.isAssignableFrom(beanClass)) {
-        Object bean = context.getBean(beanName);
-        this.healthCheckers.put(((HealthChecker) bean).getName(), (HealthChecker) bean);
+    if (springHealthCheckers != null && !springHealthCheckers.isEmpty()) {
+      for (HealthChecker checker : springHealthCheckers) {
+        this.healthCheckers.put(checker.getName(), checker);
       }
     }
   }
diff --git a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
index 9101fd1..74f65cf 100644
--- a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestHealthCheckerManager.java
@@ -18,29 +18,19 @@
 package io.servicecomb.metrics.core;
 
 import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.util.Locale;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 import org.junit.Assert;
 import org.junit.Test;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
-import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationEvent;
-import org.springframework.context.MessageSourceResolvable;
-import org.springframework.context.NoSuchMessageException;
-import org.springframework.core.ResolvableType;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.Resource;
 
 import com.google.common.collect.Lists;
 
 import io.servicecomb.foundation.common.utils.JsonUtils;
 import io.servicecomb.metrics.common.DefaultHealthCheckExtraData;
 import io.servicecomb.metrics.common.HealthCheckResult;
+import io.servicecomb.metrics.common.HealthChecker;
 import io.servicecomb.metrics.core.publish.DefaultHealthCheckerManager;
 import io.servicecomb.metrics.core.publish.HealthCheckerManager;
 import io.servicecomb.serviceregistry.RegistryUtils;
@@ -77,209 +67,20 @@ public class TestHealthCheckerManager {
       }
     };
 
-    HealthCheckerManager manager = new DefaultHealthCheckerManager(new ApplicationContext() {
+    List<HealthChecker> checkers = new ArrayList<>();
+    checkers.add(new HealthChecker() {
       @Override
-      public String getId() {
-        return null;
+      public String getName() {
+        return "custom";
       }
 
       @Override
-      public String getApplicationName() {
-        return null;
-      }
-
-      @Override
-      public String getDisplayName() {
-        return null;
-      }
-
-      @Override
-      public long getStartupDate() {
-        return 0;
-      }
-
-      @Override
-      public ApplicationContext getParent() {
-        return null;
-      }
-
-      @Override
-      public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException {
-        return null;
-      }
-
-      @Override
-      public BeanFactory getParentBeanFactory() {
-        return null;
-      }
-
-      @Override
-      public boolean containsLocalBean(String s) {
-        return false;
-      }
-
-      @Override
-      public boolean containsBeanDefinition(String s) {
-        return false;
-      }
-
-      @Override
-      public int getBeanDefinitionCount() {
-        return 0;
-      }
-
-      @Override
-      public String[] getBeanDefinitionNames() {
-        return new String[0];
-      }
-
-      @Override
-      public String[] getBeanNamesForType(ResolvableType resolvableType) {
-        return new String[0];
-      }
-
-      @Override
-      public String[] getBeanNamesForType(Class<?> aClass) {
-        return new String[0];
-      }
-
-      @Override
-      public String[] getBeanNamesForType(Class<?> aClass, boolean b, boolean b1) {
-        return new String[0];
-      }
-
-      @Override
-      public <T> Map<String, T> getBeansOfType(Class<T> aClass) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public <T> Map<String, T> getBeansOfType(Class<T> aClass, boolean b, boolean b1) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public String[] getBeanNamesForAnnotation(Class<? extends Annotation> aClass) {
-        return new String[0];
-      }
-
-      @Override
-      public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> aClass) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public <A extends Annotation> A findAnnotationOnBean(String s, Class<A> aClass)
-          throws NoSuchBeanDefinitionException {
-        return null;
-      }
-
-      @Override
-      public Object getBean(String s) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public <T> T getBean(String s, Class<T> aClass) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public <T> T getBean(Class<T> aClass) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public Object getBean(String s, Object... objects) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public <T> T getBean(Class<T> aClass, Object... objects) throws BeansException {
-        return null;
-      }
-
-      @Override
-      public boolean containsBean(String s) {
-        return false;
-      }
-
-      @Override
-      public boolean isSingleton(String s) throws NoSuchBeanDefinitionException {
-        return false;
-      }
-
-      @Override
-      public boolean isPrototype(String s) throws NoSuchBeanDefinitionException {
-        return false;
-      }
-
-      @Override
-      public boolean isTypeMatch(String s, ResolvableType resolvableType) throws NoSuchBeanDefinitionException {
-        return false;
-      }
-
-      @Override
-      public boolean isTypeMatch(String s, Class<?> aClass) throws NoSuchBeanDefinitionException {
-        return false;
-      }
-
-      @Override
-      public Class<?> getType(String s) throws NoSuchBeanDefinitionException {
-        return null;
-      }
-
-      @Override
-      public String[] getAliases(String s) {
-        return new String[0];
-      }
-
-      @Override
-      public void publishEvent(ApplicationEvent applicationEvent) {
-
-      }
-
-      @Override
-      public void publishEvent(Object o) {
-
-      }
-
-      @Override
-      public String getMessage(String s, Object[] objects, String s1, Locale locale) {
-        return null;
-      }
-
-      @Override
-      public String getMessage(String s, Object[] objects, Locale locale) throws NoSuchMessageException {
-        return null;
-      }
-
-      @Override
-      public String getMessage(MessageSourceResolvable messageSourceResolvable, Locale locale)
-          throws NoSuchMessageException {
-        return null;
-      }
-
-      @Override
-      public Environment getEnvironment() {
-        return null;
-      }
-
-      @Override
-      public Resource[] getResources(String s) throws IOException {
-        return new Resource[0];
-      }
-
-      @Override
-      public Resource getResource(String s) {
-        return null;
-      }
-
-      @Override
-      public ClassLoader getClassLoader() {
-        return null;
+      public HealthCheckResult check() {
+        return new HealthCheckResult(true, "", "");
       }
     });
+
+    HealthCheckerManager manager = new DefaultHealthCheckerManager(checkers);
     Map<String, HealthCheckResult> results = manager.check();
 
     Assert.assertTrue(results.get("default").isHealthy());
diff --git a/samples/metrics-extend-healthcheck/src/main/java/io/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java b/samples/metrics-extend-healthcheck/src/main/java/io/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java
new file mode 100644
index 0000000..43871b1
--- /dev/null
+++ b/samples/metrics-extend-healthcheck/src/main/java/io/servicecomb/samples/metrics/extendhealthcheck/SomeServiceWithHealthCheckerManager.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.servicecomb.samples.metrics.extendhealthcheck;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import io.servicecomb.metrics.core.publish.HealthCheckerManager;
+
+@Service
+public class SomeServiceWithHealthCheckerManager {
+
+  private final HealthCheckerManager manager;
+
+  @Autowired
+  public SomeServiceWithHealthCheckerManager(HealthCheckerManager manager) {
+    this.manager = manager;
+
+    this.manager.register(new MySqlHealthChecker());
+  }
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.