package org.testfun.jee.examples;
import org.testfun.jee.real.SomeDao;
import javax.ejb.EJB;
import javax.ws.rs.*;
import javax.ws.rs.core.*;
import javax.ws.rs.core.Response.Status;
import java.util.LinkedList;
import java.util.List;
@Path("/example")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ExampleResource {
@EJB
private SomeDao someDao;
@GET
@Path("/data/{id}")
public Response get(@PathParam("id") int id) {
if (id <= 0) return Response.status(Response.Status.NOT_FOUND).entity("Data with ID " + id + " wasn't found").build();
else return Response.ok(new RestData(id, "Got " + id)).build();
}
@GET
@Path("/data")
public List<RestData> getAll(@QueryParam("min") Integer minParam, @QueryParam("max") Integer maxParam) {
int min = minParam == null ? 0 : minParam;
int max = maxParam == null ? 10 : maxParam;
List<RestData> data = new LinkedList<>();
for (int i = min; i < max; ++i) {
data.add(new RestData(i, "Got " + i));
}
return data;
}
@POST
@Path("/data")
public Response create(RestData data) {
return Response.created(UriBuilder.fromPath("/example/data/").path(String.valueOf(data.getKey())).build()).build();
}
@GET
@Path("/use_ejb")
public String getEntityName(@HeaderParam("index") int index) {
return someDao.getAll().get(index).getName();
}
@POST
@Path("/form")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response postParam(@FormParam("p1") String p1, @FormParam("p2") String p2)
{
return Response.status(Status.OK).entity(p1 + "-" + p2).build();
}
@GET
@Path("/user_from_security_context")
public String getUserFromSecurityContext(@Context SecurityContext sc) {
return sc.getUserPrincipal().getName();
}
}