package threadchecker;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import com.sun.source.util.JavacTask;
import com.sun.source.util.Plugin;
import com.sun.source.util.TaskEvent;
import com.sun.source.util.TaskListener;

public class TCPlugin
implements Plugin{    
   private File tagsDump = new File("found-tags.txt");
    
   
   public TCPlugin()
   {
      if (tagsDump.exists())
      tagsDump.delete();     
      }
    
   
   @Override
   
   public String getName()
   {        
      return "threadchecker.TCPlugin";     
      }

   
   @Override
   
   public void init(JavacTask task, String... ignorePackages) 
   {        
      task.setTaskListener(new TCTaskListener(task, ignorePackages));     
      }
    
   
   private class TCTaskListener
implements TaskListener
   {        
      private TCScanner scanner = null;
       
      private JavacTask task;
       
      private String[] ignorePackages;

       
      public TCTaskListener(JavacTask task, String[] ignorePackages)
       {            
         this.task = task;
           
         this.ignorePackages = ignorePackages;         
         }

       
      @Override
       
      public void finished(TaskEvent evt)
       {
         if (evt.getKind() == TaskEvent.Kind.ANALYZE)
           {
            if (scanner == null)
               {                    
               try
                   {                        
                  this.scanner = new TCScanner(task, Arrays.asList(ignorePackages));                     
                  }
                   
               catch (NoSuchMethodException e)
                   {
                  e.printStackTrace();                     
                  }                 
               }

            scanner.scan(evt.getCompilationUnit(), null);
               
            
            
|
|
|try
|
|{}LocatedTag.dumpTagList(tagsDump);
|
|}
|
|catch (IOException e)
|
|{}e.printStackTrace();
|
|}               
            }         
         }

       
      @Override
       
      public void started(TaskEvent arg0)
       {          
      }      
   } 
}
top, use, map, class TCPlugin

.   TCPlugin
.   getName
.   init

top, use, map, class TCPlugin . TCTaskListener

.   TCTaskListener
.   finished
.   started




90 neLoCode + 7 LoComm