/* ExtendletDspContext.java Purpose: Description: History: Wed Oct 22 09:16:24 2008, Created by tomyeh Copyright (C) 2008 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.web.servlet.dsp; import java.io.IOException; import java.io.Writer; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.zkoss.web.servlet.BufferedResponse; import org.zkoss.web.util.resource.ExtendletContext; /** * Extendlet-based DSP context. * * @author tomyeh * @since 3.5.2 */ public class ExtendletDspContext extends ServletDspContext { private final ExtendletContext _webctx; private final String _dir; public ExtendletDspContext(ExtendletContext webctx, HttpServletRequest request, HttpServletResponse response, String path, Writer out) { super(webctx.getServletContext(), request, response, out, webctx.getLocator()); _webctx = webctx; if (path != null) { int j = path.lastIndexOf('/'); _dir = j > 0 ? "~." + path.substring(0, j + 1) : null; } else { _dir = null; } } public String encodeURL(String uri) throws ServletException, IOException { return _webctx.encodeURL(_request, _response, uri); } public void include(String uri, Map params) throws ServletException, IOException { if (_dir != null && uri != null && uri.length() > 0) { char cc = uri.charAt(0); if (cc != '~' && cc != '/') uri = _dir + uri; } _webctx.include(_request, (HttpServletResponse) BufferedResponse.getInstance(_response, _out), uri, params); } }