package org.vaadin.mideaas.frontend;
import java.io.IOException;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.vaadin.server.ServiceException;
import com.vaadin.server.SessionDestroyEvent;
import com.vaadin.server.SessionDestroyListener;
import com.vaadin.server.SessionInitEvent;
import com.vaadin.server.SessionInitListener;
import com.vaadin.server.VaadinServlet;
/*
* ?getmodelid=MODELID
* shows the models xml
*/
@SuppressWarnings("serial")
public class MideaasServlet extends VaadinServlet implements SessionDestroyListener, SessionInitListener {
@Override
public void servletInitialized() throws ServletException {
super.servletInitialized();
//System.out.println("servlet initialized");
getService().addSessionInitListener(this);
getService().addSessionDestroyListener(this);
}
public MideaasServlet() {
super();
//System.out.println("Servlet Constructor");
// Ugly...
// Needed for SharedView to call putModelXml when xml changes
ClaraEditor.setServlet(this);
}
private ConcurrentHashMap<String, String> modelXmls =
new ConcurrentHashMap<String, String>();
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if (request.getParameter("getmodelid") != null) {
String modelId = request.getParameter("getmodelid");
String xml = getModelXml(modelId);
response.setContentType("text/plain");
if (xml!=null) {
response.getWriter().print(xml);
}
else {
String err = "ERROR: no model with id '"+modelId+"' found.";
System.err.println(err);
response.sendError(404, err);
}
}
else {
//System.out.println("request sent");
super.service(request, response);
}
}
public void putModelXml(String modelId, String xml) {
modelXmls.put(modelId, xml);
}
private String getModelXml(String modelId) {
return modelXmls.get(modelId);
}
@Override
public void sessionDestroy(SessionDestroyEvent event) {
// TODO Auto-generated method stub
//System.out.println("Session Expired");
}
@Override
public void sessionInit(SessionInitEvent event) throws ServiceException {
// TODO Auto-generated method stub
//System.out.println("Session created");
}
}