/** * Constructor for the CmsFlexResponse, * this variation is usually used for the "top" response.<p> * * @param res the HttpServletResponse to wrap * @param controller the controller to use * @param streaming indicates if streaming should be enabled or not * @param isTopElement indicates if this is the top element of an include cascade */ public CmsFlexResponse( HttpServletResponse res, CmsFlexController controller, boolean streaming, boolean isTopElement) { super(res); m_res = res; m_controller = controller; m_encoding = controller.getCmsObject().getRequestContext().getEncoding(); m_isTopElement = isTopElement; m_parentWritesOnlyToBuffer = !streaming && !controller.isForwardMode(); setOnlyBuffering(m_parentWritesOnlyToBuffer); m_headers = new HashMap<String, List<String>>(16); m_bufferHeaders = new HashMap<String, List<String>>(8); }
/** * Constructor for the CmsFlexResponse, * this variation is usually used for the "top" response.<p> * * @param res the HttpServletResponse to wrap * @param controller the controller to use * @param streaming indicates if streaming should be enabled or not * @param isTopElement indicates if this is the top element of an include cascade */ public CmsFlexResponse( HttpServletResponse res, CmsFlexController controller, boolean streaming, boolean isTopElement) { super(res); m_res = res; m_controller = controller; m_encoding = controller.getCmsObject().getRequestContext().getEncoding(); m_isTopElement = isTopElement; m_parentWritesOnlyToBuffer = !streaming && !controller.isForwardMode(); setOnlyBuffering(m_parentWritesOnlyToBuffer); m_headers = new HashMap(16); m_bufferHeaders = new HashMap(8); }
/** * @see org.opencms.loader.I_CmsResourceLoader#service(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.ServletRequest, javax.servlet.ServletResponse) */ public void service(CmsObject cms, CmsResource resource, ServletRequest req, ServletResponse res) throws ServletException, IOException, CmsLoaderException { Lock lock = m_purgeLock.readLock(); try { lock.lock(); CmsFlexController controller = CmsFlexController.getController(req); // get JSP target name on "real" file system String target = updateJsp(resource, controller, new HashSet<String>(8)); // important: Indicate that all output must be buffered controller.getCurrentResponse().setOnlyBuffering(true); // initialize the standard contex bean to be available for all requests CmsJspStandardContextBean.getInstance(controller.getCurrentRequest()); // dispatch to external file controller.getCurrentRequest().getRequestDispatcherToExternal(cms.getSitePath(resource), target).include( req, res); } finally { lock.unlock(); } }
/** * Constructor for the CmsFlexResponse, * this variation one is usually used to wrap responses for further include calls in OpenCms.<p> * * @param res the CmsFlexResponse to wrap * @param controller the controller to use */ public CmsFlexResponse(HttpServletResponse res, CmsFlexController controller) { super(res); m_res = res; m_controller = controller; m_encoding = controller.getCurrentResponse().getEncoding(); m_isTopElement = controller.getCurrentResponse().isTopElement(); m_parentWritesOnlyToBuffer = controller.getCurrentResponse().hasIncludeList() && !controller.isForwardMode(); setOnlyBuffering(m_parentWritesOnlyToBuffer); m_headers = new HashMap<String, List<String>>(16); m_bufferHeaders = new HashMap<String, List<String>>(8); }
/** * Constructor for the CmsFlexResponse, * this variation one is usually used to wrap responses for further include calls in OpenCms.<p> * * @param res the CmsFlexResponse to wrap * @param controller the controller to use */ public CmsFlexResponse(HttpServletResponse res, CmsFlexController controller) { super(res); m_res = res; m_controller = controller; m_encoding = controller.getCurrentResponse().getEncoding(); m_isTopElement = controller.getCurrentResponse().isTopElement(); m_parentWritesOnlyToBuffer = controller.getCurrentResponse().hasIncludeList() && !controller.isForwardMode(); setOnlyBuffering(m_parentWritesOnlyToBuffer); m_headers = new HashMap(16); m_bufferHeaders = new HashMap(8); }
res.setOnlyBuffering(false);
/** * @see org.opencms.loader.I_CmsResourceLoader#service(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.ServletRequest, javax.servlet.ServletResponse) */ public void service(CmsObject cms, CmsResource resource, ServletRequest req, ServletResponse res) throws ServletException, IOException, CmsLoaderException { CmsFlexController controller = CmsFlexController.getController(req); // get JSP target name on "real" file system String target = updateJsp(resource, controller, new HashSet(8)); // important: Indicate that all output must be buffered controller.getCurrentResponse().setOnlyBuffering(true); // dispatch to external file controller.getCurrentRequest().getRequestDispatcherToExternal(cms.getSitePath(resource), target).include( req, res); }
res.setOnlyBuffering(false); res.setCmsCachingRequired(false);