Package com.alibaba.dubbo.governance.service.impl

Source Code of com.alibaba.dubbo.governance.service.impl.OwnerServiceImpl

package com.alibaba.dubbo.governance.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.utils.StringUtils;
import com.alibaba.dubbo.governance.service.OverrideService;
import com.alibaba.dubbo.governance.service.OwnerService;
import com.alibaba.dubbo.governance.service.ProviderService;
import com.alibaba.dubbo.registry.common.domain.Override;
import com.alibaba.dubbo.registry.common.domain.Owner;
import com.alibaba.dubbo.registry.common.domain.Provider;

public class OwnerServiceImpl extends AbstractService implements OwnerService {
   
    @Autowired
    ProviderService providerService;
   
    @Autowired
    OverrideService overrideService;

    public List<String> findAllServiceNames() {
        // TODO Auto-generated method stub
        return null;
    }

    public List<String> findServiceNamesByUsername(String username) {
        // TODO Auto-generated method stub
        return null;
    }

    public List<String> findUsernamesByServiceName(String serviceName) {
        // TODO Auto-generated method stub
        return null;
    }

    public List<Owner> findByService(String serviceName) {
        List<Provider> pList = providerService.findByService(serviceName);
        List<Override> cList = overrideService.findByServiceAndAddress(serviceName, Constants.ANYHOST_VALUE);
        return toOverrideLiset(pList,cList);
    }

    public List<Owner> findAll() {
        List<Provider> pList = providerService.findAll();
        List<Override> cList = overrideService.findAll();
        return toOverrideLiset(pList,cList);
    }

    public Owner findById(Long id) {
      
        return null;
    }
   
    private List<Owner> toOverrideLiset(List<Provider> pList, List<Override> cList){
        Map<String, Owner> oList = new HashMap<String, Owner>();
        for(Provider p : pList){
            if(p.getUsername() != null){
              for (String username : Constants.COMMA_SPLIT_PATTERN.split(p.getUsername())) {
                  Owner o = new Owner();
                  o.setService(p.getService());
                  o.setUsername(username);
                  oList.put(o.getService() + "/" + o.getUsername(), o);
              }
            }
        }
        for(Override c : cList){
          Map<String, String> params = StringUtils.parseQueryString(c.getParams());
          String usernames = params.get("owner");
            if(usernames != null && usernames.length() > 0){
              for (String username : Constants.COMMA_SPLIT_PATTERN.split(usernames)) {
                Owner o = new Owner();
                    o.setService(c.getService());
                    o.setUsername(username);
                    oList.put(o.getService() + "/" + o.getUsername(), o);
              }
            }
        }
        return new ArrayList<Owner>(oList.values());
    }

  public void saveOwner(Owner owner) {
    List<Override> overrides = overrideService.findByServiceAndAddress(owner.getService(), Constants.ANYHOST_VALUE);
        if (overrides == null || overrides.size() == 0) {
          Override override = new Override();
          override.setAddress(Constants.ANYHOST_VALUE);
          override.setService(owner.getService());
          override.setEnabled(true);
          override.setParams("owner=" + owner.getUsername());
          overrideService.saveOverride(override);
        } else {
          for(Override override : overrides){
            Map<String, String> params = StringUtils.parseQueryString(override.getParams());
            String usernames = params.get("owner");
            if (usernames == null || usernames.length() == 0) {
              usernames = owner.getUsername();
            } else {
              usernames = usernames + "," + owner.getUsername();
            }
            params.put("owner", usernames);
            override.setParams(StringUtils.toQueryString(params));
            overrideService.updateOverride(override);
          }
        }
  }

  public void deleteOwner(Owner owner) {
    List<Override> overrides = overrideService.findByServiceAndAddress(owner.getService(), Constants.ANYHOST_VALUE);
        if (overrides == null || overrides.size() == 0) {
          Override override = new Override();
          override.setAddress(Constants.ANYHOST_VALUE);
          override.setService(owner.getService());
          override.setEnabled(true);
          override.setParams("owner=" + owner.getUsername());
          overrideService.saveOverride(override);
        } else {
          for(Override override : overrides){
            Map<String, String> params = StringUtils.parseQueryString(override.getParams());
            String usernames = params.get("owner");
            if (usernames != null && usernames.length() > 0) {
              if (usernames.equals(owner.getUsername())) {
                params.remove("owner");
              } else {
                usernames = usernames.replace(owner.getUsername() + ",", "").replace("," + owner.getUsername(), "");
                params.put("owner", usernames);
              }
              if (params.size() > 0) {
                override.setParams(StringUtils.toQueryString(params));
                overrideService.updateOverride(override);
              } else {
                overrideService.deleteOverride(override.getId());
              }
            }
          }
        }
  }

}
TOP

Related Classes of com.alibaba.dubbo.governance.service.impl.OwnerServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.