/*
* Created on 10-Mar-2003
*/
package net.sf.jportlet.impl;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import net.sf.jportlet.portlet.Portlet.Mode;
import net.sf.jportlet.portlet.PortletResponse;
import net.sf.jportlet.portlet.PortletURI;
import net.sf.jportlet.portlet.PortletWindow.State;
import net.sf.jportlet.portlet.application.PortletProxy;
import net.sf.jportlet.portlet.descriptor.PortletDescriptor;
/**
* Implementation of {@link net.sf.jportlet.portlet.PortletResponse}
*
* @author <a href="mailto:tchbansi@sourceforge.net">Herve Tchepannou</a>
*/
public class PortletResponseImpl
extends HttpServletResponseWrapper
implements PortletResponse
{
//~ Instance fields --------------------------------------------------------
private StringWriter _buffer = new StringWriter( );
private HttpServletResponse _httpResponse;
private String _namespacePrefix;
private String _pathPrefix;
private PortletRequestImpl _portletRequest;
private PortletProxy _proxy;
private PrintWriter _writer = new PrintWriter( _buffer );
//~ Constructors -----------------------------------------------------------
public PortletResponseImpl( PortletProxy proxy,
PortletRequestImpl portletRequest,
HttpServletResponse httpResponse )
{
super( httpResponse );
PortletDescriptor descriptor = proxy.getDescriptor( );
_proxy = proxy;
_portletRequest = portletRequest;
_httpResponse = httpResponse;
_pathPrefix = descriptor.getContextPath( );
_namespacePrefix = "_" + descriptor.getName( ) + "_";
}
//~ Methods ----------------------------------------------------------------
/**
* @see net.sf.jportlet.portlet.PortletResponse#createURI()
*/
public PortletURI createURI( )
{
return new PortletURIImpl( _portletRequest, this );
}
/**
* @see net.sf.jportlet.portlet.PortletResponse#createURI(net.sf.jportlet.portlet.Portlet.Mode, net.sf.jportlet.portlet.PortletWindow.State)
*/
public PortletURI createURI( Mode mode,
State state )
{
PortletURI uri = new PortletURIImpl( _portletRequest, this );
uri.setMode( mode );
uri.setState( state );
return uri;
}
/**
* @see net.sf.jportlet.portlet.PortletResponse#createURI(java.lang.String)
*/
public PortletURI createURI(String action) {
PortletURIImpl uri = new PortletURIImpl( _portletRequest, this );
uri.setAction( action );
return uri;
}
/**
* @see net.sf.jportlet.portlet.PortletResponse#encodeNamespace(java.lang.String)
*/
public String encodeNamespace( String name )
{
return _namespacePrefix + name;
}
/**
* @see javax.servlet.http.HttpServletResponse#encodeURL(java.lang.String)
*/
public String encodeURL( String path )
{
return super.encodeURL( _pathPrefix + path );
}
public StringBuffer getBuffer( )
{
return _buffer.getBuffer( );
}
/**
* @return HttpServletResponse
*/
public HttpServletResponse getHttpResponse( )
{
return _httpResponse;
}
/**
* @return PortletProxy
*/
public PortletProxy getProxy( )
{
return _proxy;
}
/**
*
* @see javax.servlet.ServletResponse#getWriter()
*/
public PrintWriter getWriter( )
{
return _writer;
}
}