/* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential and proprietary information of Alibaba.com ("Confidential * Information"). You shall not disclose such Confidential Information and shall * use it only in accordance with the terms of the license agreement you entered * into with Alibaba.com. */ package com.alibaba.dubbo.governance.web.governance.module.screen; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import com.alibaba.dubbo.common.utils.CollectionUtils; import com.alibaba.dubbo.governance.service.OverrideService; import com.alibaba.dubbo.governance.service.ProviderService; import com.alibaba.dubbo.governance.web.common.module.screen.Restful; import com.alibaba.dubbo.registry.common.domain.LoadBalance; import com.alibaba.dubbo.registry.common.domain.Provider; import com.alibaba.dubbo.registry.common.util.OverrideUtils; import com.alibaba.dubbo.registry.common.util.Tool; /** * Providers. * URI: /services/$service/loadbalances * * @author william.liangf */ public class Loadbalances extends Restful { @Autowired private OverrideService overrideService; @Autowired private ProviderService providerService; public void index(Map<String, Object> context) { final String service = StringUtils.trimToNull((String) context.get("service")); List<LoadBalance> loadbalances; if (service != null && service.length() > 0) { loadbalances = OverrideUtils.overridesToLoadBalances(overrideService.findByService(service)); loadbalances = OverrideUtils.overridesToLoadBalances(overrideService.findByService(service)); } else { loadbalances = OverrideUtils.overridesToLoadBalances(overrideService.findAll()); } context.put("loadbalances", loadbalances); } public void show(Long id, Map<String, Object> context) { LoadBalance loadbalance = OverrideUtils.overrideToLoadBalance(overrideService.findById(id)); context.put("loadbalance", loadbalance); } public void add(Map<String, Object> context) { String service = (String)context.get("service"); if (service != null && service.length() > 0 && !service.contains("*")) { List<Provider> providerList = providerService.findByService(service); List<String> addressList = new ArrayList<String>(); for(Provider provider : providerList){ addressList.add(provider.getUrl().split("://")[1].split("/")[0]); } context.put("addressList", addressList); context.put("service", service); context.put("methods", CollectionUtils.sort(providerService.findMethodsByService(service))); } else { List<String> serviceList = Tool.sortSimpleName(providerService.findServices()); context.put("serviceList", serviceList); } if(context.get("input") != null) context.put("input", context.get("input")); } public void edit(Long id, Map<String, Object> context) { add(context); show(id, context); } public boolean create(LoadBalance loadBalance, Map<String, Object> context) { if (!super.currentUser.hasServicePrivilege(loadBalance.getService())) { context.put("message", getMessage("HaveNoServicePrivilege", loadBalance.getService())); return false; } loadBalance.setUsername((String)context.get("operator")); overrideService.saveOverride(OverrideUtils.loadBalanceToOverride(loadBalance)); return true; } public boolean update(LoadBalance loadBalance, Map<String, Object> context) { if (!super.currentUser.hasServicePrivilege(loadBalance.getService())) { context.put("message", getMessage("HaveNoServicePrivilege", loadBalance.getService())); return false; } overrideService.updateOverride(OverrideUtils.loadBalanceToOverride(loadBalance)); return true; } /** * 删除动作 * @param ids * @return */ public boolean delete(Long[] ids, Map<String, Object> context) { for (Long id : ids) { LoadBalance lb = OverrideUtils.overrideToLoadBalance(overrideService.findById(id)); if (!super.currentUser.hasServicePrivilege(lb.getService())) { context.put("message", getMessage("HaveNoServicePrivilege", lb.getService())); return false; } } for (Long id : ids) { overrideService.deleteOverride(id); } return true; } }