[jboss-cvs] jboss-seam/src/main/org/jboss/seam/servlet ...

Shane Bryzak Shane_Bryzak at symantec.com
Thu Feb 8 18:43:22 EST 2007


  User: sbryzak2
  Date: 07/02/08 18:43:22

  Modified:    src/main/org/jboss/seam/servlet       MultipartFilter.java
                        SeamExceptionFilter.java SeamFilter.java
                        SeamRedirectFilter.java SeamServletFilter.java
                        package-info.java
  Log:
  JBSEAM-790
  
  Revision  Changes    Path
  1.2       +1 -1      jboss-seam/src/main/org/jboss/seam/servlet/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/servlet/MultipartFilter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- MultipartFilter.java	8 Feb 2007 16:13:50 -0000	1.1
  +++ MultipartFilter.java	8 Feb 2007 23:43:22 -0000	1.2
  @@ -21,7 +21,7 @@
   
   @Startup
   @Scope(APPLICATION)
  - at Name("org.jboss.seam.filter.multipartFilter")
  + at Name("org.jboss.seam.servlet.multipartFilter")
   @Install(precedence = BUILT_IN)
   @Intercept(NEVER)
   public class MultipartFilter extends SeamFilter
  
  
  
  1.26      +131 -126  jboss-seam/src/main/org/jboss/seam/servlet/SeamExceptionFilter.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SeamExceptionFilter.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamExceptionFilter.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -b -r1.25 -r1.26
  --- SeamExceptionFilter.java	7 Feb 2007 21:17:24 -0000	1.25
  +++ SeamExceptionFilter.java	8 Feb 2007 23:43:22 -0000	1.26
  @@ -5,16 +5,21 @@
    * See terms of license at gnu.org.
    */
   package org.jboss.seam.servlet;
  -
  +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.ServletException;
   import javax.servlet.ServletRequest;
   import javax.servlet.ServletResponse;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  -
  +import org.jboss.seam.annotations.Install;
  +import org.jboss.seam.annotations.Intercept;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.Startup;
   import org.jboss.seam.contexts.Lifecycle;
   import org.jboss.seam.core.Exceptions;
   import org.jboss.seam.log.LogProvider;
  @@ -23,18 +28,22 @@
   import org.jboss.seam.mock.MockExternalContext;
   import org.jboss.seam.mock.MockFacesContext;
   import org.jboss.seam.util.Transactions;
  -
   /**
    * As a last line of defence, rollback uncommitted transactions 
    * at the very end of the request.
    * 
    * @author Gavin King
    */
  + at Startup
  + at Scope(APPLICATION)
  + at Name("org.jboss.seam.servlet.exceptionFilter")
  + at Install(precedence = BUILT_IN)
  + at Intercept(NEVER)
   public class SeamExceptionFilter extends SeamFilter
   {
      
      private static final LogProvider log = Logging.getLogProvider(SeamExceptionFilter.class);
  -
  +   @Override
      public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
            throws IOException, ServletException
      {
  @@ -63,7 +72,6 @@
            Lifecycle.setPhaseId(null);
         }
      }
  -
      private void endWebRequestAfterException(HttpServletRequest request, HttpServletResponse response, Exception e) 
            throws ServletException, IOException
      {
  @@ -102,12 +110,10 @@
            }
         }
      }
  -
      private MockFacesContext createFacesContext(HttpServletRequest request, HttpServletResponse response)
      {
         return new MockFacesContext( new MockExternalContext(getServletContext(), request, response), new MockApplication() );
      }
  -
      private void rollbackTransactionIfNecessary()
      {
         try {
  @@ -122,5 +128,4 @@
            log.error("could not roll back transaction", te);
         }
      }
  -
   }
  
  
  
  1.3       +31 -30    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.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- SeamFilter.java	8 Feb 2007 16:13:50 -0000	1.2
  +++ SeamFilter.java	8 Feb 2007 23:43:22 -0000	1.3
  @@ -23,37 +23,30 @@
      
      private Set<Filter> filters = new HashSet<Filter>();   
      
  +   /**
  +    * By default the filter is enabled
  +    */
      private boolean disabled = false;
  -   private String urlPattern = null; 
  +   
  +   /**
  +    * By default match all requests
  +    */
  +   private String urlPattern = "/*"; 
      
      private class FilterChainImpl implements FilterChain
      {      
  +      private FilterChain chain;      
         private Iterator<Filter> iter;
         
  -      private ServletRequest request;
  -      private ServletResponse response;
  -      
  -      public FilterChainImpl(Iterator<Filter> iter)
  +      public FilterChainImpl(FilterChain chain, Iterator<Filter> iter)
         {
  +         this.chain = chain;
           this.iter = iter;  
         }
         
  -      public ServletRequest getRequest()
  -      {
  -         return request;
  -      }
  -      
  -      public ServletResponse getResponse()
  -      {
  -         return response;
  -      }
  -      
         public void doFilter(ServletRequest request, ServletResponse response)
             throws IOException, ServletException
         {
  -         this.request = request;
  -         this.response = response;
  -         
            if (iter.hasNext())
            {
               Filter filter = iter.next();
  @@ -75,6 +68,10 @@
                  filter.doFilter(request, response, this);
               }
            }
  +         else
  +         {
  +            chain.doFilter(request, response);
  +         }
         }
      }
   
  @@ -87,16 +84,20 @@
         throws ServletException 
      {
         servletContext = filterConfig.getServletContext();      
  -      initFilters();
  +      initFilters(filterConfig);
      }
      
  -   protected void initFilters()
  +   protected void initFilters(FilterConfig filterConfig)
  +      throws ServletException
      {
         if (getClass().equals(SeamFilter.class)) 
         {
            Context ctx = new WebApplicationContext(servletContext); 
            
  -         addFilter((Filter) ctx.get(MultipartFilter.class));
  +         addFilter((Filter) ctx.get(MultipartFilter.class), filterConfig);
  +         addFilter((Filter) ctx.get(SeamRedirectFilter.class), filterConfig);
  +         addFilter((Filter) ctx.get(SeamExceptionFilter.class), filterConfig);
  +         addFilter((Filter) ctx.get(SeamServletFilter.class), filterConfig);
         }
      }
      
  @@ -104,16 +105,16 @@
                           FilterChain chain)
          throws IOException, ServletException
      {
  -      FilterChainImpl fc = new FilterChainImpl(filters.iterator());
  -      fc.doFilter(request, response);
  -      chain.doFilter(fc.getRequest(), fc.getResponse());
  +      new FilterChainImpl(chain, filters.iterator()).doFilter(request, response);
      }
      
  -   protected boolean addFilter(Filter filter)
  +   protected boolean addFilter(Filter filter, FilterConfig filterConfig)
  +      throws ServletException
      {
         if (filter instanceof SeamFilter && ((SeamFilter) filter).isDisabled())
            return false;
            
  +      filter.init(filterConfig);
         return filters.add(filter);
      }
      
  
  
  
  1.16      +101 -97   jboss-seam/src/main/org/jboss/seam/servlet/SeamRedirectFilter.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SeamRedirectFilter.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamRedirectFilter.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -b -r1.15 -r1.16
  --- SeamRedirectFilter.java	4 Feb 2007 09:41:21 -0000	1.15
  +++ SeamRedirectFilter.java	8 Feb 2007 23:43:22 -0000	1.16
  @@ -1,7 +1,8 @@
   package org.jboss.seam.servlet;
  -
  +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.faces.context.ExternalContext;
   import javax.faces.context.FacesContext;
   import javax.servlet.FilterChain;
  @@ -10,19 +11,27 @@
   import javax.servlet.ServletResponse;
   import javax.servlet.http.HttpServletResponse;
   import javax.servlet.http.HttpServletResponseWrapper;
  -
  +import org.jboss.seam.annotations.Install;
  +import org.jboss.seam.annotations.Intercept;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.Startup;
   import org.jboss.seam.contexts.Contexts;
   import org.jboss.seam.core.Manager;
   import org.jboss.seam.core.Pages;
  -
   /**
    * Propagates the conversation context across a browser redirect
    * 
    * @author Gavin King
    */
  + at Startup
  + at Scope(APPLICATION)
  + at Name("org.jboss.seam.servlet.redirectFilter")
  + at Install(precedence = BUILT_IN)
  + at Intercept(NEVER)
   public class SeamRedirectFilter extends SeamFilter 
   {
  -
  +   @Override
      public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException 
      {
  @@ -47,10 +56,8 @@
               }
               super.sendRedirect(url);
            }
  -
         };
      }
  -
      public static String getViewId(String url)
      {
         ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
  @@ -59,7 +66,6 @@
         String contextPath = externalContext.getRequestContextPath();
         return getViewId(url, pathInfo, servletPath, contextPath);
      }
  -
      protected static String getViewId(String url, String pathInfo, String servletPath, String contextPath)
      {
         if (pathInfo!=null)
  @@ -86,12 +92,10 @@
            return null;
         }
      }
  -
      private static int getParamLoc(String url)
      {
         int loc = url.indexOf('?');
         if (loc<0) loc = url.length();
         return loc;
      }
  -
   }
  
  
  
  1.13      +93 -61    jboss-seam/src/main/org/jboss/seam/servlet/SeamServletFilter.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SeamServletFilter.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/SeamServletFilter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -b -r1.12 -r1.13
  --- SeamServletFilter.java	4 Feb 2007 02:30:49 -0000	1.12
  +++ SeamServletFilter.java	8 Feb 2007 23:43:22 -0000	1.13
  @@ -1,7 +1,8 @@
   package org.jboss.seam.servlet;
  -
  +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.faces.event.PhaseId;
   import javax.servlet.FilterChain;
   import javax.servlet.ServletException;
  @@ -9,25 +10,57 @@
   import javax.servlet.ServletResponse;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpSession;
  -
  +import org.jboss.seam.annotations.Install;
  +import org.jboss.seam.annotations.Intercept;
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.Startup;
   import org.jboss.seam.contexts.ContextAdaptor;
   import org.jboss.seam.contexts.Lifecycle;
   import org.jboss.seam.core.Manager;
   import org.jboss.seam.log.LogProvider;
   import org.jboss.seam.log.Logging;
  -
   /**
  - * Manages the Seam contexts associated with a request
  - * to any servlet.
  + * Manages the Seam contexts associated with a request to any servlet.
    * 
    * @author Gavin King
    */
  + at Startup
  + at Scope(APPLICATION)
  + at Name("org.jboss.seam.servlet.servletFilter")
  + at Install(precedence = BUILT_IN)
  + at Intercept(NEVER)
   public class SeamServletFilter extends SeamFilter 
   {
  -   
      private static final LogProvider log = Logging.getLogProvider(SeamServletFilter.class);
  +   private boolean explicitDisabled = false;
  +   
  +   /**
  +    * This filter is disabled by default, unless a urlPattern is set    
  +    */
  +   public SeamServletFilter()
  +   {
  +      super.setDisabled(true);
  +   }
      
  -   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  +   @Override
  +   public void setUrlPattern(String urlPattern)
  +   {
  +      super.setUrlPattern(urlPattern);
  +      if (!explicitDisabled) setDisabled(false);
  +   }
  +   
  +   @Override
  +   public void setDisabled(boolean disabled)
  +   {
  +      super.setDisabled(disabled);
  +      if (disabled) explicitDisabled = true;
  +   }
  + 
  +   @Override
  +   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
  +       throws IOException, ServletException 
  +   {
         log.debug("beginning request");
         
         HttpSession session = ( (HttpServletRequest) request ).getSession(true);
  @@ -57,5 +90,4 @@
            log.debug("ended request");
         }
      }
  -
   }
  
  
  
  1.2       +1 -1      jboss-seam/src/main/org/jboss/seam/servlet/package-info.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: package-info.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/package-info.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- package-info.java	8 Feb 2007 16:13:50 -0000	1.1
  +++ package-info.java	8 Feb 2007 23:43:22 -0000	1.2
  @@ -1,4 +1,4 @@
  - at Namespace(value="http://jboss.com/products/seam/filter", prefix="org.jboss.seam.filter")
  + at Namespace(value="http://jboss.com/products/seam/servlet", prefix="org.jboss.seam.servlet")
   package org.jboss.seam.servlet;
   
   import org.jboss.seam.annotations.*;
  
  
  



More information about the jboss-cvs-commits mailing list