[jboss-cvs] jboss-seam/src/main/org/jboss/seam/servlet ...
Gavin King
gavin.king at jboss.com
Tue Jul 17 09:08:58 EDT 2007
User: gavin
Date: 07/07/17 09:08:58
Modified: src/main/org/jboss/seam/servlet SeamFilter.java
Log:
redesign Ajax4JsfFilter integration
Filters no longer need @Startup
Revision Changes Path
1.9 +28 -19 jboss-seam/src/main/org/jboss/seam/servlet/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/servlet/SeamFilter.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- SeamFilter.java 25 Jun 2007 22:56:50 -0000 1.8
+++ SeamFilter.java 17 Jul 2007 13:08:58 -0000 1.9
@@ -15,12 +15,11 @@
import javax.servlet.ServletResponse;
import org.jboss.seam.Component;
-import org.jboss.seam.contexts.ApplicationContext;
-import org.jboss.seam.contexts.Context;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.contexts.Lifecycle;
import org.jboss.seam.core.Init;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
-import org.jboss.seam.servlet.ServletApplicationMap;
import org.jboss.seam.util.SortItem;
import org.jboss.seam.util.Sorter;
import org.jboss.seam.web.AbstractFilter;
@@ -41,7 +40,7 @@
{
private static final LogProvider log = Logging.getLogProvider(SeamFilter.class);
- private List<Filter> filters = new ArrayList<Filter>();
+ private List<Filter> filters;
private class FilterChainImpl implements FilterChain
{
@@ -87,21 +86,37 @@
public void init(FilterConfig filterConfig) throws ServletException
{
- Context tempApplicationContext = new ApplicationContext( new ServletApplicationMap( filterConfig.getServletContext() ) );
- Init init = (Init) tempApplicationContext.get(Init.class);
+ Lifecycle.mockApplication();
+ try
+ {
+ filters = getSortedFilters();
+ for ( Filter filter : filters )
+ {
+ log.info( "Initializing filter: " + Component.getComponentName(filter.getClass()));
+ filter.init(filterConfig);
+ }
+ }
+ finally
+ {
+ Lifecycle.unmockApplication();
+ }
+ }
- // Setup ready for sorting
+ private List<Filter> getSortedFilters()
+ {
+ //retrieve the Filter instances from the application context
Map<String, SortItem<Filter>> sortItemsMap = new HashMap<String, SortItem<Filter>>();
List<SortItem<Filter>> sortItems = new ArrayList<SortItem<Filter>>();
- for (String filterName : init.getInstalledFilters())
+ for (String filterName : Init.instance().getInstalledFilters())
{
- Filter filter = (Filter) tempApplicationContext.get(filterName);
+ Filter filter = (Filter) Component.getInstance(filterName, ScopeType.APPLICATION);
SortItem<Filter> si = new SortItem<Filter>(filter);
sortItemsMap.put(filterName, si);
sortItems.add(si);
}
+ //create sort items
for (SortItem<Filter> sortItem : sortItems)
{
org.jboss.seam.annotations.web.Filter filterAnn = getFilterAnnotation(sortItem.getObj().getClass());
@@ -123,15 +138,9 @@
// Do the sort
Sorter<Filter> sList = new Sorter<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);
- }
+ List<Filter> sorted = new ArrayList<Filter>();
+ for (SortItem<Filter> si: sortItems) sorted.add( si.getObj() );
+ return sorted;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
More information about the jboss-cvs-commits
mailing list