package org.jboss.seam.web;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.annotations.web.Filter;
/**
* A Seam filter component wrapper for the Ajax4JSF.
* This class exists to allow the Ajax4JSF filter to
* be configured in the web: namespace. The subclass
* does the actual work.
*
* @see org.jboss.seam.ui.filter.Ajax4jsfFilterInstantiator
* @author Pete Muir
*
*/
@Scope(APPLICATION)
@Name("org.jboss.seam.web.ajax4jsfFilter")
@Install(value=false,precedence = BUILT_IN, dependencies="org.jboss.seam.web.ajax4jsfFilterInstantiator")
@BypassInterceptors
@Filter
public class Ajax4jsfFilter extends AbstractFilter
{
private javax.servlet.Filter delegate;
private String forceParser;
private String enableCache;
private String log4jInitFile;
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException
{
if (delegate==null)
{
chain.doFilter(servletRequest, servletResponse);
}
else
{
delegate.doFilter(servletRequest, servletResponse, chain);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
super.init(filterConfig);
delegate = (javax.servlet.Filter) Component.getInstance("org.jboss.seam.web.ajax4jsfFilterInstantiator", ScopeType.STATELESS);
if (delegate!=null)
{
Map<String, String> parameters = new HashMap<String, String>();
if ( getForceParser() != null )
{
parameters.put( "forceparser", getForceParser() );
}
if ( getEnableCache() != null )
{
parameters.put( "enable-cache", getEnableCache() );
}
if ( getLog4jInitFile() != null )
{
parameters.put( "log4j-init-file", getLog4jInitFile() );
}
delegate.init( new FilterConfigWrapper(filterConfig, parameters) );
}
}
public String getEnableCache()
{
return enableCache;
}
public void setEnableCache(String enableCache)
{
this.enableCache = enableCache;
}
public String getForceParser()
{
return forceParser;
}
public void setForceParser(String forceParser)
{
this.forceParser = forceParser;
}
public String getForceparser()
{
return forceParser;
}
public void setForceparser(String forceParser)
{
this.forceParser = forceParser;
}
public String getLog4jInitFile()
{
return log4jInitFile;
}
public void setLog4jInitFile(String log4jInitFile)
{
this.log4jInitFile = log4jInitFile;
}
}