package org.openmrs.module.reporting.web.controller.portlet; import java.io.IOException; import java.util.Map; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openmrs.util.OpenmrsClassLoader; import org.openmrs.web.WebConstants; import org.openmrs.web.controller.PortletController; import org.springframework.web.servlet.ModelAndView; /** * This Controller provides common functionality required by all reporting portlets */ public class ReportingPortletController extends PortletController { protected final Log log = LogFactory.getLog(getClass()); @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String uniqueRequestId = (String) request.getAttribute(WebConstants.INIT_REQ_UNIQUE_ID); String lastRequestId = (String) session.getAttribute(WebConstants.OPENMRS_PORTLET_LAST_REQ_ID); if (uniqueRequestId.equals(lastRequestId)) { session.removeAttribute(WebConstants.OPENMRS_PORTLET_LAST_REQ_ID); session.removeAttribute(WebConstants.OPENMRS_PORTLET_CACHED_MODEL); } return super.handleRequest(request, response); } protected void populateModel(HttpServletRequest request, Map<String, Object> model) { // TODO: Figure out why this is necessary. Thread.currentThread().setContextClassLoader(OpenmrsClassLoader.getInstance()); model.put("portletUUID", UUID.randomUUID().toString().replace("-", "")); } }