<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>Archiva Base :: Scheduled Tasks - Tag List report</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
                            <?xml version="1.0" encoding="UTF-8"?>
<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
                                <?xml version="1.0" encoding="UTF-8"?>
<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
pageTracker._initData();
pageTracker._trackPageview();</script>
                    </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../" id="bannerLeft">
    
                                            <img src="../../images/archiva.png" alt="" />
    
            </a>
                        <a href="http://www.apache.org/" id="bannerRight">
    
                                    <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../">Archiva</a>
              &gt;
      
          <a href="../">Archiva :: Modules</a>
                </div>
            <div class="xright">      
  

  
    
  
  
            &nbsp;| Last Published: 27 May 2011
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
            
              
            <li class="expanded">
              <a href="project-reports.html">Project Reports</a>
                <ul>
                  
    <li class="none">
              <a href="changelog.html">changelog</a>
        </li>
                  
    <li class="none">
              <a href="checkstyle.html">Checkstyle</a>
        </li>
                  
    <li class="none">
              <a href="clirr-report.html">Clirr</a>
        </li>
                  
    <li class="none">
              <a href="cobertura/index.html">Cobertura Test Coverage</a>
        </li>
                  
    <li class="none">
              <a href="cpd.html">CPD Report</a>
        </li>
                  
    <li class="none">
              <a href="dev-activity.html">dev-activity</a>
        </li>
                  
    <li class="none">
              <a href="file-activity.html">file-activity</a>
        </li>
                  
    <li class="none">
              <a href="surefire-report.html">Maven Surefire Report</a>
        </li>
                  
    <li class="none">
              <a href="pmd.html">PMD Report</a>
        </li>
                  
    <li class="none">
              <strong>Tag List</strong>
        </li>
              </ul>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>Tag List Report</h2><p>The following document contains the listing of user tags found in the code. Below is the summary of the occurrences per tag.</p><table class="bodyTable"><tr class="a"><th>Tag Class</th><th>Total number of occurrences</th><th>Tag strings used by tag class</th></tr><tr class="b"><td><a href="#tag_class_17">@todo</a></td><td>2</td><td>@todo</td></tr><tr class="a"><td><a href="#tag_class_18">TODO</a></td><td>5</td><td>TODO</td></tr></table><p>Each tag is detailed below:</p><div class="section"><h3><a name="tag_class_17">@todo</a></h3><p><b>Number of occurrences found in the code: 2</b></p><table class="bodyTable"><tr class="b"><th>org.apache.maven.archiva.scheduled.executors.ArchivaIndexingTaskExecutor</th><th>Line</th></tr><tr class="a"><td>Nexus specifics shouldn't be in the archiva-scheduled module</td><td>54</td></tr><tr class="b"><th>org.apache.maven.archiva.scheduled.tasks.TaskCreator</th><th>Line</th></tr><tr class="a"><td>Nexus specifics shouldn't be in the archiva-scheduled module</td><td>33</td></tr></table></div><div class="section"><h3><a name="tag_class_18">TODO</a></h3><p><b>Number of occurrences found in the code: 5</b></p><table class="bodyTable"><tr class="b"><th>org.apache.maven.archiva.scheduled.executors.ArchivaIndexingTaskExecutorTest</th><th>Line</th></tr><tr class="a"><td>test it was removed from the packaged index also</td><td>245</td></tr><tr class="b"><th>org.apache.maven.archiva.scheduled.executors.ArchivaRepositoryScanningTaskExecutorTest</th><th>Line</th></tr><tr class="a"><td>can't test these as they weren't stored in the database assertEquals( 8, newStats.getTotalArtifactCount() ); assertEquals( 3, newStats.getTotalGroupCount() ); assertEquals( 5, newStats.getTotalProjectCount() );</td><td>229</td></tr><tr class="b"><td>can't test these as they weren't stored in the database assertEquals( 8, newStats.getTotalArtifactCount() ); assertEquals( 3, newStats.getTotalGroupCount() ); assertEquals( 5, newStats.getTotalProjectCount() );</td><td>263</td></tr><tr class="a"><td>can't test these as they weren't stored in the database assertEquals( 8, newStats.getTotalArtifactCount() ); assertEquals( 3, newStats.getTotalGroupCount() ); assertEquals( 5, newStats.getTotalProjectCount() );</td><td>311</td></tr><tr class="b"><td>can't test these as they weren't stored in the database assertEquals( 8, newStats.getTotalArtifactCount() ); assertEquals( 3, newStats.getTotalGroupCount() ); assertEquals( 5, newStats.getTotalProjectCount() );</td><td>359</td></tr></table></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2006-2011
    
          The Apache Software Foundation
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
