[jboss-cvs] jboss-seam/src/main/org/jboss/seam/web ...
Peter Muir
peter at bleepbleep.org.uk
Fri May 4 07:31:34 EDT 2007
User: pmuir
Date: 07/05/04 07:31:34
Modified: src/main/org/jboss/seam/web MultipartFilter.java
ContextFilter.java SeamFilter.java
ExceptionFilter.java RedirectFilter.java
CharacterEncodingFilter.java
Added: src/main/org/jboss/seam/web
AbstractAjax4jsfFilter.java
Log:
JBSEAM-1054, JBSEAM-1281
Revision Changes Path
1.4 +2 -0 jboss-seam/src/main/org/jboss/seam/web/MultipartFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MultipartFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/MultipartFilter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- MultipartFilter.java 16 Apr 2007 23:39:15 -0000 1.3
+++ MultipartFilter.java 4 May 2007 11:31:34 -0000 1.4
@@ -13,6 +13,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.jboss.seam.annotations.Filter;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
@@ -24,6 +25,7 @@
@Name("org.jboss.seam.web.multipartFilter")
@Install(precedence = BUILT_IN)
@Intercept(NEVER)
+ at Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class MultipartFilter extends AbstractFilter
{
public static final String MULTIPART = "multipart/";
1.5 +2 -0 jboss-seam/src/main/org/jboss/seam/web/ContextFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ContextFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/ContextFilter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- ContextFilter.java 16 Apr 2007 23:39:15 -0000 1.4
+++ ContextFilter.java 4 May 2007 11:31:34 -0000 1.5
@@ -14,6 +14,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
+import org.jboss.seam.annotations.Filter;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
@@ -35,6 +36,7 @@
@Name("org.jboss.seam.web.contextFilter")
@Install(value=false, precedence = BUILT_IN)
@Intercept(NEVER)
+ at Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class ContextFilter extends AbstractFilter
{
private static final LogProvider log = Logging.getLogProvider(ContextFilter.class);
1.5 +62 -3 jboss-seam/src/main/org/jboss/seam/web/SeamFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SeamFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/SeamFilter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- SeamFilter.java 10 Feb 2007 16:31:25 -0000 1.4
+++ SeamFilter.java 4 May 2007 11:31:34 -0000 1.5
@@ -2,7 +2,10 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -11,11 +14,14 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import org.jboss.seam.Component;
import org.jboss.seam.contexts.Context;
import org.jboss.seam.contexts.WebApplicationContext;
import org.jboss.seam.core.Init;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
+import org.jboss.seam.util.SortItem;
+import org.jboss.seam.util.SorterNew;
public class SeamFilter implements Filter
{
@@ -69,12 +75,48 @@
{
Context tempApplicationContext = new WebApplicationContext( filterConfig.getServletContext() );
Init init = (Init) tempApplicationContext.get(Init.class);
- for ( String filterName: init.getInstalledFilters() )
+
+ // Setup ready for sorting
+ Map<String, SortItem<Filter>> sortItemsMap = new HashMap<String, SortItem<Filter>>();
+ List<SortItem<Filter>> sortItems = new ArrayList<SortItem<Filter>>();
+
+ for (String filterName : init.getInstalledFilters())
{
Filter filter = (Filter) tempApplicationContext.get(filterName);
- log.info( "Initializing filter: " + filterName );
- filter.init(filterConfig);
+ SortItem<Filter> si = new SortItem<Filter>(filter);
+ sortItemsMap.put(filterName, si);
+ sortItems.add(si);
+ }
+
+ for (SortItem<Filter> sortItem : sortItems)
+ {
+ org.jboss.seam.annotations.Filter filterAnn = getFilterAnnotation(sortItem.getObj().getClass());
+ if ( filterAnn != null )
+ {
+ for (String s : Arrays.asList( filterAnn.around() ) )
+ {
+ SortItem<Filter> aroundSortItem = sortItemsMap.get(s);
+ if (sortItem!=null && aroundSortItem != null) sortItem.getAround().add( aroundSortItem );
+ }
+ for (String s : Arrays.asList( filterAnn.within() ) )
+ {
+ SortItem<Filter> withinSortItem = sortItemsMap.get(s);
+ if (sortItem!=null && withinSortItem != null) sortItem.getWithin().add( withinSortItem );
+ }
+ }
+ }
+
+ // Do the sort
+ SorterNew<Filter> sList = new SorterNew<Filter>();
+ sortItems = sList.sort(sortItems);
+
+ // Set the sorted filters, initialize them
+ for (SortItem<Filter> sortItem : sortItems)
+ {
+ Filter filter = sortItem.getObj();
filters.add(filter);
+ log.info( "Initializing filter: " + Component.getComponentName(filter.getClass()));
+ filter.init(filterConfig);
}
}
@@ -91,4 +133,21 @@
filter.destroy();
}
}
+
+ private org.jboss.seam.annotations.Filter getFilterAnnotation(Class<?> clazz)
+ {
+ while (!Object.class.equals(clazz))
+ {
+ if (clazz.isAnnotationPresent(org.jboss.seam.annotations.Filter.class))
+ {
+ return clazz.getAnnotation(org.jboss.seam.annotations.Filter.class);
+ }
+ else
+ {
+ clazz = clazz.getSuperclass();
+ }
+ }
+ return null;
+ }
+
}
1.7 +2 -0 jboss-seam/src/main/org/jboss/seam/web/ExceptionFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ExceptionFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/ExceptionFilter.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- ExceptionFilter.java 16 Apr 2007 23:39:15 -0000 1.6
+++ ExceptionFilter.java 4 May 2007 11:31:34 -0000 1.7
@@ -19,6 +19,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.jboss.seam.annotations.Filter;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
@@ -44,6 +45,7 @@
@Name("org.jboss.seam.web.exceptionFilter")
@Install(precedence = BUILT_IN)
@Intercept(NEVER)
+ at Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class ExceptionFilter extends AbstractFilter
{
1.9 +2 -0 jboss-seam/src/main/org/jboss/seam/web/RedirectFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: RedirectFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/RedirectFilter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- RedirectFilter.java 16 Apr 2007 23:39:15 -0000 1.8
+++ RedirectFilter.java 4 May 2007 11:31:34 -0000 1.9
@@ -15,6 +15,7 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
+import org.jboss.seam.annotations.Filter;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
@@ -37,6 +38,7 @@
@Name("org.jboss.seam.web.redirectFilter")
@Install(precedence = BUILT_IN)
@Intercept(NEVER)
+ at Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class RedirectFilter extends AbstractFilter
{
public void doFilter(ServletRequest request, ServletResponse response,
1.5 +2 -0 jboss-seam/src/main/org/jboss/seam/web/CharacterEncodingFilter.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CharacterEncodingFilter.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/web/CharacterEncodingFilter.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- CharacterEncodingFilter.java 10 Feb 2007 16:31:25 -0000 1.4
+++ CharacterEncodingFilter.java 4 May 2007 11:31:34 -0000 1.5
@@ -10,6 +10,7 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import org.jboss.seam.annotations.Filter;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
@@ -28,6 +29,7 @@
@Name("org.jboss.seam.servlet.characterEncodingFilter")
@Install(value=false, precedence = BUILT_IN)
@Intercept(NEVER)
+ at Filter(within="org.jboss.seam.web.ajax4jsfFilter")
public class CharacterEncodingFilter extends AbstractFilter
{
private String encoding;
1.1 date: 2007/05/04 11:31:34; author: pmuir; state: Exp;jboss-seam/src/main/org/jboss/seam/web/AbstractAjax4jsfFilter.java
Index: AbstractAjax4jsfFilter.java
===================================================================
package org.jboss.seam.web;
import static org.jboss.seam.InterceptionType.NEVER;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.jboss.seam.annotations.Filter;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
@Scope(APPLICATION)
@Name("org.jboss.seam.web.ajax4jsfFilter")
@Install(precedence = BUILT_IN, classDependencies="org.ajax4jsf.Filter")
@Intercept(NEVER)
@Filter
public class AbstractAjax4jsfFilter extends AbstractFilter
{
private String forceParser;
private String enableCache;
private String log4jInitFile;
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException
{
delegate.doFilter(servletRequest, servletResponse, chain);
}
protected javax.servlet.Filter delegate;
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
filterConfig = initFilterConfig(filterConfig);
super.init(filterConfig);
delegate.init(filterConfig);
}
protected FilterConfig initFilterConfig(FilterConfig filterConfig)
{
return filterConfig;
}
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;
}
}
More information about the jboss-cvs-commits
mailing list