package com.xenoage.zong.webserver.servlet;
import static com.xenoage.utils.PlatformUtils.platformUtils;
import static com.xenoage.zong.webserver.util.Response.writeError;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xenoage.zong.webserver.Webserver;
import com.xenoage.zong.webserver.actions.Action;
import com.xenoage.zong.webserver.model.requests.Request;
/**
* Servlet that responses to all {@link Request}s by executing
* the corresponding {@link Action}s.
*
* @author Andreas Wenger
*/
public class ActionServlet
extends HttpServlet {
@Override protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
throws ServletException {
doPost(httpRequest, httpResponse);
}
@Override protected void doPost(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
throws ServletException {
try {
Request request;
String data = httpRequest.getParameter("data");
if (data != null) {
request = Request.read(data);
request.respond(Webserver.instance, httpResponse);
}
else {
writeError(httpResponse, "Parameter data missing");
}
} catch (RuntimeException ex) {
writeError(httpResponse, platformUtils().getStackTraceString(ex));
return;
} catch (Exception ex) {
writeError(httpResponse, "Internal Server Error: " + ex.getMessage() + "\n\n" +
"Stack trace:\n" + platformUtils().getStackTraceString(ex));
return;
}
}
}