package org.openstack.atlas.api.resources; import org.openstack.atlas.api.helpers.ResponseFactory; import org.openstack.atlas.api.repository.ValidatorRepository; import org.openstack.atlas.api.resources.providers.CommonDependencyProvider; import org.openstack.atlas.api.validation.context.HttpRequestType; import org.openstack.atlas.api.validation.results.ValidatorResult; import org.openstack.atlas.docs.loadbalancers.api.v1.CertificateMapping; import org.openstack.atlas.service.domain.entities.LoadBalancer; import org.openstack.atlas.service.domain.operations.Operation; import org.openstack.atlas.service.domain.pojos.MessageDataContainer; import javax.ws.rs.*; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; import java.util.HashSet; import java.util.Set; import static javax.ws.rs.core.MediaType.*; public class CertificateMappingResource extends CommonDependencyProvider { private Integer id; private Integer accountId; private Integer loadBalancerId; private HttpHeaders requestHeaders; @GET @Produces({APPLICATION_XML, APPLICATION_JSON, APPLICATION_ATOM_XML}) public Response retrieveCertificateMapping() { try { org.openstack.atlas.service.domain.entities.CertificateMapping dbCertMapping = certificateMappingService.getByIdAndLoadBalancerId(id, loadBalancerId); CertificateMapping certificateMapping = dozerMapper.map(dbCertMapping, CertificateMapping.class); return Response.status(Response.Status.OK).entity(certificateMapping).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } @PUT @Consumes({APPLICATION_XML, APPLICATION_JSON}) public Response updateCertificateMapping(CertificateMapping certificateMapping) { ValidatorResult result = ValidatorRepository.getValidatorFor(CertificateMapping.class).validate(certificateMapping, HttpRequestType.PUT); if (!result.passedValidation()) { return getValidationFaultResponse(result); } try { certificateMapping.setId(id); Set<org.openstack.atlas.service.domain.entities.CertificateMapping> certificateMappingSet = new HashSet<org.openstack.atlas.service.domain.entities.CertificateMapping>(); org.openstack.atlas.service.domain.entities.CertificateMapping domainCertMapping = dozerMapper.map(certificateMapping, org.openstack.atlas.service.domain.entities.CertificateMapping.class); certificateMappingSet.add(domainCertMapping); LoadBalancer lb = new LoadBalancer(); lb.setId(loadBalancerId); lb.setAccountId(accountId); lb.setUserName(getUserName(requestHeaders)); lb.setCertificateMappings(certificateMappingSet); certificateMappingService.update(lb); MessageDataContainer dataContainer = new MessageDataContainer(); dataContainer.setAccountId(accountId); dataContainer.setLoadBalancerId(loadBalancerId); dataContainer.setUserName(getUserName(requestHeaders)); dataContainer.setCertificateMapping(domainCertMapping); asyncService.callAsyncLoadBalancingOperation(Operation.UPDATE_CERTIFICATE_MAPPING, dataContainer); return Response.status(Response.Status.ACCEPTED).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } @DELETE public Response deleteCertificateMapping() { try { Set<org.openstack.atlas.service.domain.entities.CertificateMapping> certificateMappingSet = new HashSet<org.openstack.atlas.service.domain.entities.CertificateMapping>(); org.openstack.atlas.service.domain.entities.CertificateMapping domainCertMapping = new org.openstack.atlas.service.domain.entities.CertificateMapping(); domainCertMapping.setId(id); certificateMappingSet.add(domainCertMapping); LoadBalancer lb = new LoadBalancer(); lb.setId(loadBalancerId); lb.setAccountId(accountId); lb.setUserName(getUserName(requestHeaders)); lb.setCertificateMappings(certificateMappingSet); certificateMappingService.prepareForDelete(lb); MessageDataContainer dataContainer = new MessageDataContainer(); dataContainer.setAccountId(accountId); dataContainer.setLoadBalancerId(loadBalancerId); dataContainer.setUserName(getUserName(requestHeaders)); dataContainer.setCertificateMapping(domainCertMapping); asyncService.callAsyncLoadBalancingOperation(Operation.DELETE_CERTIFICATE_MAPPING, dataContainer); return Response.status(Response.Status.ACCEPTED).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } public void setId(Integer id) { this.id = id; } public void setAccountId(Integer accountId) { this.accountId = accountId; } public void setLoadBalancerId(Integer loadBalancerId) { this.loadBalancerId = loadBalancerId; } public void setRequestHeaders(HttpHeaders requestHeaders) { this.requestHeaders = requestHeaders; } }