package bo.gotthardt.exception;
import bo.gotthardt.AccessibleBy;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import javax.ws.rs.core.Response;
import java.security.Principal;
/**
* @author Bo Gotthardt
*/
@Slf4j
public class WebAppPreconditions {
public static void checkArgumentNotNull(@Nullable Object object, String message, Object... args) {
if (object == null) {
throw new JsonMessageException(Response.Status.BAD_REQUEST.getStatusCode(), message, args);
}
}
public static <P extends Principal, A extends AccessibleBy<P>> void assertAccessTo(P principal, A item) {
if (!item.isAccessibleBy(principal)) {
log.info("Denied access to {} for {}.", item, principal);
throw new UnauthorizedException();
}
}
}