package com.dianping.pigeon.console.status.checker; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import com.dianping.pigeon.log.Logger; import com.dianping.pigeon.log.LoggerLoader; import com.dianping.pigeon.remoting.ServiceFactory; import com.dianping.pigeon.remoting.provider.config.ProviderConfig; import com.dianping.pigeon.util.CollectionUtils; import org.springframework.aop.support.AopUtils; public class ServiceStatusChecker implements StatusChecker { private static final Logger logger = LoggerLoader.getLogger(ServiceStatusChecker.class); @Override public List<Map<String, Object>> collectStatusInfo() { List<Map<String, Object>> services = new ArrayList<Map<String, Object>>(); if (GlobalStatusChecker.isInitialized()) { try { Map<String, ProviderConfig<?>> serviceProviders = ServiceFactory.getAllServiceProviders(); if (!CollectionUtils.isEmpty(serviceProviders)) { for (Entry<String, ProviderConfig<?>> entry : serviceProviders.entrySet()) { String serviceName = entry.getKey(); ProviderConfig<?> providerConfig = entry.getValue(); Class<?> beanClass = AopUtils.getTargetClass(providerConfig.getService()); Map<String, Object> item = new LinkedHashMap<String, Object>(); item.put("name", serviceName); item.put("type", beanClass.getName()); item.put("published", providerConfig.isPublished()); services.add(item); } } } catch (Throwable e) { logger.error("", e); } } return services; } public String checkError() { return null; } }