package hu.sch.web.rest; import hu.sch.domain.user.User; import hu.sch.services.UserManagerLocal; import hu.sch.util.PatternHolder; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author balo */ public abstract class PekWebservice { private static final Logger log = LoggerFactory.getLogger(PekWebservice.class); @Context HttpServletRequest requestContext; @Context private UriInfo context; @Inject private UserManagerLocal userManager; protected void doAudit() { final StringBuilder auditMessage = new StringBuilder("AUDIT LOG for GET method. "); auditMessage.append(" URL: "); if (context != null && context.getRequestUri() != null) { auditMessage.append(context.getRequestUri().toString()); } else { log.info("URIContext or RequestUri was null."); auditMessage.append("UNKNOWN"); } auditMessage.append(" ; client IP: ").append(requestContext.getRemoteAddr()); log.info(auditMessage.toString()); } protected void triggerErrorResponse(final Response.Status status) { throw new WebApplicationException(Response.status(status).build()); } protected void checkNeptun(final String neptun) { if (!PatternHolder.NEPTUN_PATTERN.matcher(neptun).matches()) { log.error("Webservice called with invalid neptun=" + neptun); triggerErrorResponse(Response.Status.BAD_REQUEST); } } protected void checkUid(final String uid) { if (uid.length() < 2 || uid.length() > 20 || !PatternHolder.UID_PATTERN.matcher(uid).matches()) { log.error("Webservice called with invalid uid={}", uid); triggerErrorResponse(Response.Status.BAD_REQUEST); } } protected User findUserByNeptun(final String neptun) { final User user = userManager.findUserByNeptun(neptun, true); if (user == null) { log.info("User not found with neptun code={}", neptun); triggerErrorResponse(Response.Status.NOT_FOUND); } return user; } protected User findUserByUid(final String uid) { final User user = userManager.findUserByScreenName(uid); if (user == null) { log.info("User not found with login name={}", uid); triggerErrorResponse(Response.Status.NOT_FOUND); } return user; } }