package org.cloudfoundry.community.servicebroker.brooklyn.repository;
import java.util.Map;
import java.util.concurrent.Future;
import org.cloudfoundry.community.servicebroker.brooklyn.model.BrooklynServiceInstanceBinding;
import org.cloudfoundry.community.servicebroker.brooklyn.service.BrooklynRestAdmin;
import org.cloudfoundry.community.servicebroker.brooklyn.service.ServiceUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BrooklynServiceInstanceBindingRepository {
private static final Logger LOG = LoggerFactory.getLogger(BrooklynServiceInstanceBindingRepository.class);
private BrooklynRestAdmin restAdmin;
private String application = "service-broker-records";
private String entity = "service-instance-binding-repository";
@Autowired
public BrooklynServiceInstanceBindingRepository(BrooklynRestAdmin restApi) {
this.restAdmin = restApi;
}
@SuppressWarnings("unchecked")
public BrooklynServiceInstanceBinding findOne(String bindingId) {
Future<Map<String, Object>> serviceBindingFuture = restAdmin.getConfigAsMap(application, entity, bindingId);
Map<String, Object> map = ServiceUtil.getFutureValueLoggingError(serviceBindingFuture);
if (map == null) return null;
return new BrooklynServiceInstanceBinding(
(String)map.get("id"),
(String)map.get("serviceInstanceId"),
(Map<String, Object>)map.get("credentials"),
(String)map.get("appGuid"),
(String)map.get("entityId"));
}
public BrooklynServiceInstanceBinding save(BrooklynServiceInstanceBinding serviceInstanceBinding) {
return (BrooklynServiceInstanceBinding) ServiceUtil.getFutureValueLoggingError(restAdmin.setConfig(application, entity, serviceInstanceBinding.getServiceBindingId(), serviceInstanceBinding));
}
public void delete(String bindingId) {
restAdmin.deleteConfig(application, entity, bindingId);
}
}