content: package com.ctrip.framework.apollo.portal.service;
  
  import com.ctrip.framework.apollo.common.dto.NamespaceLockDTO;
  import com.ctrip.framework.apollo.core.enums.Env;
  import com.ctrip.framework.apollo.portal.api.AdminServiceAPI;
  import com.ctrip.framework.apollo.portal.component.config.PortalConfig;
  import com.ctrip.framework.apollo.portal.entity.vo.LockInfo;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  
  @Service
  public class NamespaceLockService {
  
    @Autowired
    private AdminServiceAPI.NamespaceLockAPI namespaceLockAPI;
    @Autowired
    private PortalConfig portalConfig;
  
  
    public NamespaceLockDTO getNamespaceLock(String appId, Env env, String clusterName, String namespaceName) {
      return namespaceLockAPI.getNamespaceLockOwner(appId, env, clusterName, namespaceName);
    }
  
    public LockInfo getNamespaceLockInfo(String appId, Env env, String clusterName, String namespaceName) {
      LockInfo lockInfo = new LockInfo();
  
      NamespaceLockDTO namespaceLockDTO = namespaceLockAPI.getNamespaceLockOwner(appId, env, clusterName, namespaceName);
      String lockOwner = namespaceLockDTO == null ? "" : namespaceLockDTO.getDataChangeCreatedBy();
      lockInfo.setLockOwner(lockOwner);
  
      lockInfo.setEmergencyPublishAllowed(portalConfig.isEmergencyPublishAllowed(env));
  
      return lockInfo;
    }
  
  }
  