package com.apuntesdejava.rest.seguridad;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@Stateless
@Path("/calculadora")
@DeclareRoles({"USER","ADMIN"})
public class CalculadoraService {
static final Logger LOGGER = Logger.getLogger(CalculadoraService.class.getName());
@GET
@RolesAllowed("USER")
@Path("/factorial")
public String factorial(@QueryParam("base") long base) {
LOGGER.log(Level.INFO, "Realizando factorial({0})", base);
return String.valueOf(_factorial(base));
}
private long _factorial(long base) {
LOGGER.log(Level.FINE, "factorial({0})", base);
if (base > 1) {
return base * _factorial(base - 1);
}
return 1;
}
}