blob: 7e51e0913331031aaade24b00c6bd60a70e69a46 [file] [log] [blame]
package org.eclipse.emf.emfstore.jax.server.resources;
import static org.eclipse.emf.emfstore.jax.common.CallParamStrings.BRANCHES_PATH_COMPLETE;
import static org.eclipse.emf.emfstore.jax.common.CallParamStrings.PROJECT_ID_PATH_PARAM;
import static org.eclipse.emf.emfstore.jax.common.TransferUtil.convertEObjectsToXmlIntoStreamingOutput;
import static org.eclipse.emf.emfstore.jax.common.TransferUtil.createProjectIdFromString;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.StreamingOutput;
import org.eclipse.emf.emfstore.internal.server.model.AuthenticationInformation;
import org.eclipse.emf.emfstore.internal.server.model.ProjectId;
import org.eclipse.emf.emfstore.internal.server.model.versioning.BranchInfo;
import org.eclipse.emf.emfstore.server.exceptions.ESException;
/**
* the Branches JAX-RS resource class
*
* @author Pascal Schliski
*
*/
@Path(BRANCHES_PATH_COMPLETE)
@SuppressWarnings("restriction")
public class Branches extends EmfStoreJaxrsResource implements IBranches {
@GET
@Produces({ MediaType.APPLICATION_XML })
public Response getBranches(@PathParam(PROJECT_ID_PATH_PARAM) String projectIdAsString) throws ESException {
if (emfStore == null || accessControl == null) {
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
}
final ProjectId projectId = createProjectIdFromString(projectIdAsString);
final AuthenticationInformation authenticationInformation = logIn();
final List<BranchInfo> branches = emfStore.getBranches(authenticationInformation.getSessionId(), projectId);
logOut(authenticationInformation);
final StreamingOutput streamingOutput = convertEObjectsToXmlIntoStreamingOutput(branches);
return Response.ok(streamingOutput).build();
}
}