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 <[email protected]> AuthorDate: Tue Jan 9 16:37:57 2018 +0800 SCB-166 rebase and fix pr comment Signed-off-by: zhengyangyong <[email protected]> --- .../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 "[email protected]" <[email protected]>.
