package org.openstack.atlas.api.mgmt.resources; import org.openstack.atlas.api.mgmt.resources.providers.ManagementDependencyProvider; import org.openstack.atlas.api.resources.providers.RequestStateContainer; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.SecurityContext; import javax.ws.rs.core.UriInfo; @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public class RootResource extends ManagementDependencyProvider { @Context private HttpHeaders hh; @Context private SecurityContext sc; @Context private UriInfo ui; @Context HttpHeaders requestHeaders; private RequestStateContainer origContainer; private ManagementResource mgmtResource; private org.openstack.atlas.api.resources.RootResource publicApiResource; @Path("management") public ManagementResource retrieveManagementResource() { this.origContainer.setHttpHeaders(hh); this.origContainer.setSecurityContext(sc); this.origContainer.setUriInfo(ui); return mgmtResource; } @Path("/{id: [1-9][0-9]*}") public org.openstack.atlas.api.resources.RootResource retrievePublicApiResource(@PathParam("id") int id) { publicApiResource.setRequestHeaders(requestHeaders); publicApiResource.setAccountId(id); this.origContainer.setHttpHeaders(hh); this.origContainer.setSecurityContext(sc); this.origContainer.setUriInfo(ui); // TODO : Create a roles filter /* if(!isUserInRole("ops,cp")) { Response resp = ResponseFactory.accessDenied(); // Always ends up being a 404 return resp; }*/ return publicApiResource; } public void setMgmtResource(ManagementResource mgmtResource) { this.mgmtResource = mgmtResource; } public void setPublicApiResource(org.openstack.atlas.api.resources.RootResource publicApiResource) { this.publicApiResource = publicApiResource; } public RequestStateContainer getOrigContainer() { return origContainer; } public void setOrigContainer(RequestStateContainer origContainer) { this.origContainer = origContainer; } }