package com.sequenceiq.cloudbreak.controller; import java.util.HashSet; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.convert.ConversionService; import org.springframework.stereotype.Component; import com.sequenceiq.cloudbreak.api.endpoint.TopologyEndpoint; import com.sequenceiq.cloudbreak.api.model.TopologyRequest; import com.sequenceiq.cloudbreak.api.model.TopologyResponse; import com.sequenceiq.cloudbreak.domain.CbUser; import com.sequenceiq.cloudbreak.domain.Topology; import com.sequenceiq.cloudbreak.logger.MDCBuilder; import com.sequenceiq.cloudbreak.repository.TopologyRepository; import com.sequenceiq.cloudbreak.service.topology.TopologyService; @Component public class TopologyController implements TopologyEndpoint { @Autowired private TopologyService topologyService; @Autowired private TopologyRepository topologyRepository; @Autowired @Qualifier("conversionService") private ConversionService conversionService; @Autowired private AuthenticatedUserService authenticatedUserService; @Override public Set<TopologyResponse> getPublics() { CbUser user = authenticatedUserService.getCbUser(); MDCBuilder.buildUserMdcContext(user); Set<Topology> stacks = topologyRepository.findAllInAccount(user.getAccount()); return convert(stacks); } private TopologyResponse convert(Topology topology) { return conversionService.convert(topology, TopologyResponse.class); } private Set<TopologyResponse> convert(Set<Topology> topologies) { Set<TopologyResponse> jsons = new HashSet<>(); for (Topology topology : topologies) { jsons.add(convert(topology)); } return jsons; } @Override public TopologyResponse postPublic(TopologyRequest topologyRequest) { CbUser user = authenticatedUserService.getCbUser(); MDCBuilder.buildUserMdcContext(user); Topology topology = conversionService.convert(topologyRequest, Topology.class); topology = topologyService.create(user, topology); return conversionService.convert(topology, TopologyResponse.class); } @Override public void delete(Long id, Boolean forced) { CbUser user = authenticatedUserService.getCbUser(); MDCBuilder.buildUserMdcContext(user); topologyService.delete(id, user); } @Override public TopologyResponse get(Long id) { CbUser user = authenticatedUserService.getCbUser(); MDCBuilder.buildUserMdcContext(user); Topology topology = topologyService.get(id); return convert(topology); } }