/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.rendering;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.joda.time.DateTime;
/**
* Apr 23, 2009
*/
public class RenderedWindowResult
implements Serializable
{
private String contentEncoding = "UTF-8";
private String content;
private String httpContentType;
private DateTime expirationTimeInCache;
private String outputMethod;
private static final Pattern NAMESPACE_PATTERN = Pattern.compile( "xmlns(:\\w+)?=\\\"http://www\\.w3\\.org/1999/xhtml\\\"" );
public boolean isErrorFree()
{
return !( this instanceof ErrorRenderPortletResult );
}
public void setContent( String value )
{
this.content = value;
}
public String getContent()
{
return content;
}
public String getOutputMethod()
{
return outputMethod;
}
public void setOutputMethod( String outputMethod )
{
this.outputMethod = outputMethod;
}
public byte[] getContentAsBytes()
throws UnsupportedEncodingException
{
return content.getBytes( contentEncoding );
}
public String getHttpContentType()
{
return httpContentType;
}
public void setHttpContentType( String httpContentType )
{
this.httpContentType = httpContentType;
}
public DateTime getExpirationTimeInCache()
{
return expirationTimeInCache;
}
public void setExpirationTimeInCache( DateTime expirationTimeInCache )
{
this.expirationTimeInCache = expirationTimeInCache;
}
public void setContentEncoding( String value )
{
this.contentEncoding = value;
}
public String getContentEncoding()
{
return contentEncoding;
}
public void stripXHTMLNamespaces()
{
if ( content == null )
{
return;
}
content = stripNamespaces( content );
}
private String stripNamespaces( String content )
{
final Matcher matcher = NAMESPACE_PATTERN.matcher( content );
final String result = matcher.replaceAll( "" );
return result;
}
public RenderedWindowResult clone()
{
RenderedWindowResult clone = new RenderedWindowResult();
clone.setContent( content );
clone.setContentEncoding( contentEncoding );
clone.setExpirationTimeInCache( expirationTimeInCache );
clone.setHttpContentType( httpContentType );
clone.setOutputMethod( outputMethod );
return clone;
}
}