[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