* under the License.
*/
+import org.apache.archiva.admin.model.beans.ManagedRepository;
+import org.apache.commons.collections.CollectionUtils;
+
+import javax.xml.bind.annotation.XmlRootElement;
import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
import java.util.Map;
-import org.apache.archiva.admin.model.beans.ManagedRepository;
-import org.apache.commons.collections.CollectionUtils;
-
/**
* RepositoryScanStatistics - extension to the RepositoryContentStatistics model.
*
* @version $Id$
*/
+@XmlRootElement( name = "repositoryScanStatistics" )
public class RepositoryScanStatistics
{
private transient List<String> knownConsumers;
private transient List<String> invalidConsumers;
private transient long startTimestamp;
-
+
private SimpleDateFormat df = new SimpleDateFormat();
/**
/**
* Field whenGathered
*/
- private java.util.Date whenGathered;
+ private Date whenGathered;
/**
* Field duration
* under the License.
*/
+import org.apache.archiva.repository.scanner.RepositoryScanStatistics;
import org.apache.archiva.rest.api.model.Artifact;
import org.apache.archiva.rest.api.model.ArtifactTransferRequest;
import org.apache.archiva.security.common.ArchivaRoleConstants;
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
@RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER )
+ /**
+ * index repository
+ */
Boolean scanRepository( @QueryParam( "repositoryId" ) String repositoryId,
@QueryParam( "fullScan" ) boolean fullScan )
throws ArchivaRestServiceException;
+ @Path( "scanRepositoryDirectories/{repositoryId}" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER )
+ /**
+ * scan directories
+ * @since 1.4-M3
+ */
+ RepositoryScanStatistics scanRepositoryDirectories( @PathParam( "repositoryId" ) String repositoryId )
+ throws ArchivaRestServiceException;
+
+
@Path( "alreadyScanning/{repositoryId}" )
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
import org.apache.archiva.repository.metadata.RepositoryMetadataException;
import org.apache.archiva.repository.metadata.RepositoryMetadataReader;
import org.apache.archiva.repository.metadata.RepositoryMetadataWriter;
+import org.apache.archiva.repository.scanner.RepositoryScanStatistics;
+import org.apache.archiva.repository.scanner.RepositoryScanner;
+import org.apache.archiva.repository.scanner.RepositoryScannerException;
import org.apache.archiva.rest.api.model.Artifact;
import org.apache.archiva.rest.api.model.ArtifactTransferRequest;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
@Inject
protected List<RepositoryListener> listeners = new ArrayList<RepositoryListener>();
+ @Inject
+ private RepositoryScanner repoScanner;
+
private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[]{ ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 };
public Boolean scanRepository( String repositoryId, boolean fullScan )
}
catch ( RepositoryException e )
{
- throw new ArchivaRestServiceException( "Repository exception: " + e.getMessage(), 400 );
+ throw new ArchivaRestServiceException( "Repository exception: " + e.getMessage(), 500 );
}
catch ( MetadataResolutionException e )
{
- throw new ArchivaRestServiceException( "Repository exception: " + e.getMessage(), 400 );
+ throw new ArchivaRestServiceException( "Repository exception: " + e.getMessage(), 500 );
}
catch ( MetadataRepositoryException e )
{
- throw new ArchivaRestServiceException( "Repository exception: " + e.getMessage(), 400 );
+ throw new ArchivaRestServiceException( "Repository exception: " + e.getMessage(), 500 );
}
catch ( RepositoryAdminException e )
{
- throw new ArchivaRestServiceException( "RepositoryAdmin exception: " + e.getMessage(), 400 );
+ throw new ArchivaRestServiceException( "RepositoryAdmin exception: " + e.getMessage(), 500 );
}
finally
return Boolean.TRUE;
}
+ public RepositoryScanStatistics scanRepositoryDirectories( String repositoryId )
+ throws ArchivaRestServiceException
+ {
+ long sinceWhen = RepositoryScanner.FRESH_SCAN;
+ try
+ {
+ return repoScanner.scan( getManagedRepositoryAdmin().getManagedRepository( repositoryId ), sinceWhen );
+ }
+ catch ( RepositoryScannerException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new ArchivaRestServiceException( "RepositoryScannerException exception: " + e.getMessage(), 500 );
+ }
+ catch ( RepositoryAdminException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new ArchivaRestServiceException( "RepositoryScannerException exception: " + e.getMessage(), 500 );
+ }
+ }
/**
* Update artifact level metadata. Creates one if metadata does not exist after artifact deletion.