package io.fathom.cloud.identity.api.os.resources; import io.fathom.cloud.CloudException; import io.fathom.cloud.identity.api.os.model.v3.Domain; import io.fathom.cloud.identity.api.os.model.v3.DomainList; import io.fathom.cloud.identity.api.os.model.v3.DomainWrapper; import io.fathom.cloud.identity.services.IdentityService; import io.fathom.cloud.protobuf.IdentityModel.DomainData; import io.fathom.cloud.protobuf.IdentityModel.UserData; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.Lists; @Path("/openstack/identity/v3/domains") @Produces({ "application/json" }) public class DomainsResource extends IdentityResourceBase { private static final Logger log = LoggerFactory.getLogger(DomainsResource.class); @Inject IdentityService identityService; @GET public DomainList listDomains() throws CloudException { UserData user = getUser(); DomainList response = new DomainList(); response.domains = Lists.newArrayList(); for (DomainData data : identityService.listDomains(user)) { Domain domain = toModel(data); response.domains.add(domain); } return response; } @GET @Path("{id}") public DomainWrapper getDomain(@PathParam("id") String id) throws CloudException { UserData user = getUser(); DomainData data = identityService.findDomain(user, id); notFoundIfNull(data); DomainWrapper response = new DomainWrapper(); response.domain = toModel(data); return response; } private Domain toModel(DomainData data) { Domain model = new Domain(); model.id = "" + data.getId(); model.name = data.getName(); model.description = data.getDescription(); if (data.hasEnabled()) { model.enabled = data.getEnabled(); } else { model.enabled = true; } return model; } }