[jboss-cvs] jboss-seam/src/debug/org/jboss/seam/debug/hot ...

Gavin King gavin.king at jboss.com
Wed Mar 7 00:20:40 EST 2007


  User: gavin   
  Date: 07/03/07 00:20:40

  Added:       src/debug/org/jboss/seam/debug/hot  HotDepoyFilter.java
  Log:
  hot deployment for JavaBean components
  
  Revision  Changes    Path
  1.1      date: 2007/03/07 05:20:40;  author: gavin;  state: Exp;jboss-seam/src/debug/org/jboss/seam/debug/hot/HotDepoyFilter.java
  
  Index: HotDepoyFilter.java
  ===================================================================
  package org.jboss.seam.debug.hot;
  
  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.File;
  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 org.jboss.seam.Seam;
  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.core.Init;
  import org.jboss.seam.init.Initialization;
  import org.jboss.seam.log.LogProvider;
  import org.jboss.seam.log.Logging;
  import org.jboss.seam.web.AbstractFilter;
  
  @Name("org.jboss.seam.debug.hotDeployFilter")
  @Startup
  @Install(precedence = BUILT_IN)
  @Intercept(NEVER)
  @Scope(APPLICATION)
  public class HotDepoyFilter extends AbstractFilter
  {
  
     private static LogProvider log = Logging.getLogProvider(HotDepoyFilter.class);
     
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
              throws IOException, ServletException
     {
        Init init = (Init) getServletContext().getAttribute( Seam.getComponentName(Init.class) );
        if (init!=null)
        {
           for ( File file: init.getHotDeployPaths() )
           {
              if ( scan(request, init, file) )
              {
                 new Initialization( getServletContext() ).redeploy( ( (HttpServletRequest) request ).getSession(true) );
                 break;
              }
           }
        }
        chain.doFilter(request, response);
     }
  
     private boolean scan(ServletRequest request, Init init, File file)
     {
        if ( file.isFile() )
        {
           if ( log.isDebugEnabled() )
           {
              log.debug( "file updated: " + file.getName() );
           }
           if ( file.lastModified() > init.getTimestamp() )
           {
              return true;
           }
        }
        else if ( file.isDirectory() )
        {
           for ( File f: file.listFiles() )
           {
              if ( scan(request, init, f) )
              {
                 return true;
              }
           }
        }
        return false;
     }
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list