package com.ebay.cloud.cms.typsafe.service.ext;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.ebay.cloud.cms.typsafe.service.CMSClientConfig;
import com.ebay.cloud.cms.typsafe.service.CMSClientService;
/**
* A facade service to provide access to cms service. Supporting metadata
* operation and different repository
*
* @author liasu
*
*/
public class CMSService {
private String serviceEndpoint;
private Map<String, CMSClientService> repoSeviceEntries = new ConcurrentHashMap<String, CMSClientService>();
public CMSService(String baseUrl) {
this.serviceEndpoint = baseUrl;
}
private CMSClientService createClientService(String repo, String codeGenPrefix) {
CMSClientConfig config = new CMSClientConfig(serviceEndpoint, repo, "main", codeGenPrefix);
CMSClientService clientService = CMSClientService.getClientService(config);
return clientService;
}
public CMSClientService getClientService(String repo, String codeGenPrefix) {
if (repoSeviceEntries.containsKey(repo)) {
return repoSeviceEntries.get(repo);
} else {
repoSeviceEntries.put(repo, createClientService(repo, codeGenPrefix));
return repoSeviceEntries.get(repo);
}
}
}