Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
nobodyiam committed Mar 29, 2016
1 parent 7692e14 commit 5efb7c4
Show file tree
Hide file tree
Showing 17 changed files with 152 additions and 192 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -27,4 +27,5 @@ target
dev
fat
uat
prd
prd
apollo-env.properties
@@ -1,29 +1,30 @@
package com.ctrip.apollo.adminservice.controller;

import com.ctrip.apollo.biz.service.AdminConfigService;
import com.ctrip.apollo.biz.service.AdminReleaseService;
import com.ctrip.apollo.core.dto.ConfigItemDTO;
import com.ctrip.apollo.core.dto.ReleaseSnapshotDTO;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

import javax.annotation.Resource;

@RestController
@RequestMapping("/configs")
public class ConfigController {

@Resource(name = "adminConfigService")
@Autowired
private AdminConfigService adminConfigService;

@Autowired
private AdminReleaseService adminReleaseService;

@RequestMapping("/release/{releaseId}")
public List<ReleaseSnapshotDTO> getRelaseSnapshot(@PathVariable long releaseId) {
return adminConfigService.findReleaseSnapshotByReleaseId(releaseId);
return adminReleaseService.findReleaseSnapshotByReleaseId(releaseId);
}

@RequestMapping("/latest")
Expand Down
@@ -1,6 +1,6 @@
package com.ctrip.apollo.adminservice.controller;

import com.ctrip.apollo.biz.service.AdminConfigService;
import com.ctrip.apollo.biz.service.AdminReleaseService;
import com.ctrip.apollo.core.dto.VersionDTO;

import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -15,18 +15,15 @@
public class VersionController {

@Autowired
private AdminConfigService adminConfigService;
private AdminReleaseService adminReleaseService;

@RequestMapping("/app/{appId}")
public List<VersionDTO> versions(@PathVariable String appId) {

return adminConfigService.findVersionsByApp(appId);
return adminReleaseService.findVersionsByApp(appId);
}

@RequestMapping("/{versionId}")
public VersionDTO version(@PathVariable long versionId) {
return adminConfigService.loadVersionById(versionId);
return adminReleaseService.loadVersionById(versionId);
}


}
@@ -1,25 +1,55 @@
package com.ctrip.apollo.biz.service;

import com.google.common.base.Strings;

import com.ctrip.apollo.biz.entity.Cluster;
import com.ctrip.apollo.biz.entity.ConfigItem;
import com.ctrip.apollo.biz.repository.ClusterRepository;
import com.ctrip.apollo.biz.repository.ConfigItemRepository;
import com.ctrip.apollo.biz.utils.ApolloBeanUtils;
import com.ctrip.apollo.core.dto.ClusterDTO;
import com.ctrip.apollo.core.dto.ConfigItemDTO;
import com.ctrip.apollo.core.dto.ReleaseSnapshotDTO;
import com.ctrip.apollo.core.dto.VersionDTO;

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

import java.util.Collections;
import java.util.List;

/**
* config service for admin
*/
public interface AdminConfigService {

List<ReleaseSnapshotDTO> findReleaseSnapshotByReleaseId(long releaseId);

List<VersionDTO> findVersionsByApp(String appId);

VersionDTO loadVersionById(long versionId);

List<ClusterDTO> findClustersByApp(String appId);

List<ConfigItemDTO> findConfigItemsByClusters(List<Long> clusterIds);
@Service("adminConfigService")
public class AdminConfigService {

@Autowired
private ClusterRepository clusterRepository;
@Autowired
private ConfigItemRepository configItemRepository;


public List<ClusterDTO> findClustersByApp(String appId) {
if (Strings.isNullOrEmpty(appId)) {
return Collections.EMPTY_LIST;
}
List<Cluster> clusters = clusterRepository.findByAppId(appId);
if (clusters == null || clusters.size() == 0) {
return Collections.EMPTY_LIST;
}

return ApolloBeanUtils.batchTransform(ClusterDTO.class, clusters);
}

public List<ConfigItemDTO> findConfigItemsByClusters(List<Long> clusterIds) {
if (clusterIds == null || clusterIds.size() == 0) {
return Collections.EMPTY_LIST;
}
List<ConfigItem> configItems = configItemRepository.findByClusterIdIsIn(clusterIds);
if (configItems == null || configItems.size() == 0) {
return Collections.EMPTY_LIST;
}

return ApolloBeanUtils.batchTransform(ConfigItemDTO.class, configItems);
}

}
@@ -1,19 +1,12 @@
package com.ctrip.apollo.biz.service.impl;
package com.ctrip.apollo.biz.service;

import com.google.common.base.Strings;

import com.ctrip.apollo.biz.entity.Cluster;
import com.ctrip.apollo.biz.entity.ConfigItem;
import com.ctrip.apollo.biz.entity.ReleaseSnapshot;
import com.ctrip.apollo.biz.entity.Version;
import com.ctrip.apollo.biz.repository.ClusterRepository;
import com.ctrip.apollo.biz.repository.ConfigItemRepository;
import com.ctrip.apollo.biz.repository.ReleaseSnapShotRepository;
import com.ctrip.apollo.biz.repository.VersionRepository;
import com.ctrip.apollo.biz.service.AdminConfigService;
import com.ctrip.apollo.biz.utils.ApolloBeanUtils;
import com.ctrip.apollo.core.dto.ClusterDTO;
import com.ctrip.apollo.core.dto.ConfigItemDTO;
import com.ctrip.apollo.core.dto.ReleaseSnapshotDTO;
import com.ctrip.apollo.core.dto.VersionDTO;

Expand All @@ -23,19 +16,16 @@
import java.util.Collections;
import java.util.List;

@Service("adminConfigService")
public class AdminConfigServiceImpl implements AdminConfigService {

@Autowired
private VersionRepository versionRepository;
/**
* @author Jason Song(song_s@ctrip.com)
*/
@Service("adminReleaseService")
public class AdminReleaseService {
@Autowired
private ReleaseSnapShotRepository releaseSnapShotRepository;
@Autowired
private ClusterRepository clusterRepository;
@Autowired
private ConfigItemRepository configItemRepository;
private VersionRepository versionRepository;

@Override
public List<ReleaseSnapshotDTO> findReleaseSnapshotByReleaseId(long releaseId) {
if (releaseId <= 0) {
return Collections.EMPTY_LIST;
Expand All @@ -50,8 +40,6 @@ public List<ReleaseSnapshotDTO> findReleaseSnapshotByReleaseId(long releaseId) {
return ApolloBeanUtils.batchTransform(ReleaseSnapshotDTO.class, releaseSnapShots);
}


@Override
public List<VersionDTO> findVersionsByApp(String appId) {
if (Strings.isNullOrEmpty(appId)) {
return Collections.EMPTY_LIST;
Expand All @@ -65,43 +53,15 @@ public List<VersionDTO> findVersionsByApp(String appId) {
return ApolloBeanUtils.batchTransform(VersionDTO.class, versions);
}

@Override
public VersionDTO loadVersionById(long versionId) {
if (versionId <= 0) {
return null;
}
Version version = versionRepository.findById(versionId);
if (version == null){
if (version == null) {
return null;
}
VersionDTO dto = ApolloBeanUtils.transfrom(VersionDTO.class, version);
return dto;
}

@Override
public List<ClusterDTO> findClustersByApp(String appId) {
if (Strings.isNullOrEmpty(appId)) {
return Collections.EMPTY_LIST;
}
List<Cluster> clusters = clusterRepository.findByAppId(appId);
if (clusters == null || clusters.size() == 0) {
return Collections.EMPTY_LIST;
}

return ApolloBeanUtils.batchTransform(ClusterDTO.class, clusters);
}

@Override
public List<ConfigItemDTO> findConfigItemsByClusters(List<Long> clusterIds) {
if (clusterIds == null || clusterIds.size() == 0) {
return Collections.EMPTY_LIST;
}
List<ConfigItem> configItems = configItemRepository.findByClusterIdIsIn(clusterIds);
if (configItems == null || configItems.size() == 0) {
return Collections.EMPTY_LIST;
}

return ApolloBeanUtils.batchTransform(ConfigItemDTO.class, configItems);
}

}
@@ -1,26 +1,86 @@
package com.ctrip.apollo.biz.service;

import com.google.common.collect.Maps;

import com.ctrip.apollo.biz.entity.ReleaseSnapshot;
import com.ctrip.apollo.biz.entity.Version;
import com.ctrip.apollo.biz.repository.ReleaseSnapShotRepository;
import com.ctrip.apollo.biz.repository.VersionRepository;
import com.ctrip.apollo.core.dto.ApolloConfig;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

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

import java.io.IOException;
import java.util.Map;

/**
* Config Service
*
* @author Jason Song(song_s@ctrip.com)
*/
public interface ConfigService {
@Service("configService")
public class ConfigService {
@Autowired
private VersionRepository versionRepository;
@Autowired
private ReleaseSnapShotRepository releaseSnapShotRepository;
@Autowired
private ObjectMapper objectMapper;
private TypeReference<Map<String, Object>> configurationTypeReference =
new TypeReference<Map<String, Object>>() {
};

/**
* Load configuration from database
*/
ApolloConfig loadConfig(String appId, String clusterName, String versionName);
public ApolloConfig loadConfig(String appId, String clusterName, String versionName) {
Version version = loadVersionByAppIdAndVersionName(appId, versionName);
if (version == null) {
return null;
}

return loadConfigByVersionAndClusterName(version, clusterName);
}

/**
* Load Version by appId and versionName from database
*/
Version loadVersionByAppIdAndVersionName(String appId, String versionName);
public Version loadVersionByAppIdAndVersionName(String appId, String versionName) {
return versionRepository.findByAppIdAndName(appId, versionName);
}

/**
* Load Config by version and clusterName from database
*/
ApolloConfig loadConfigByVersionAndClusterName(Version version, String clusterName);
public ApolloConfig loadConfigByVersionAndClusterName(Version version, String clusterName) {
ReleaseSnapshot releaseSnapShot =
releaseSnapShotRepository
.findByReleaseIdAndClusterName(version.getReleaseId(), clusterName);
if (releaseSnapShot == null) {
return null;
}

return assembleConfig(version, releaseSnapShot);
}

private ApolloConfig assembleConfig(Version version, ReleaseSnapshot releaseSnapShot) {
ApolloConfig config =
new ApolloConfig(version.getAppId(), releaseSnapShot.getClusterName(), version.getName(),
version.getReleaseId());
config.setConfigurations(transformConfigurationToMap(releaseSnapShot.getConfigurations()));

return config;
}

Map<String, Object> transformConfigurationToMap(String configurations) {
try {
return objectMapper.readValue(configurations, configurationTypeReference);
} catch (IOException e) {
e.printStackTrace();
return Maps.newHashMap();
}
}
}

0 comments on commit 5efb7c4

Please sign in to comment.