mirror of https://github.com/apache/archiva.git
add REST method to really scan repositories
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1299102 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6ab573edc1
commit
33577da0f9
|
@ -19,18 +19,21 @@ package org.apache.archiva.repository.scanner;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* RepositoryScanStatistics - extension to the RepositoryContentStatistics model.
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
@XmlRootElement( name = "repositoryScanStatistics" )
|
||||
public class RepositoryScanStatistics
|
||||
{
|
||||
private transient List<String> knownConsumers;
|
||||
|
@ -49,7 +52,7 @@ public class RepositoryScanStatistics
|
|||
/**
|
||||
* Field whenGathered
|
||||
*/
|
||||
private java.util.Date whenGathered;
|
||||
private Date whenGathered;
|
||||
|
||||
/**
|
||||
* Field duration
|
||||
|
|
|
@ -22,6 +22,7 @@ package org.apache.archiva.repository.scanner;
|
|||
import org.apache.archiva.admin.model.beans.ManagedRepository;
|
||||
import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
|
||||
import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
|
@ -50,6 +50,11 @@
|
|||
<artifactId>metadata-model</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>archiva-repository-scanner</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.codehaus.redback</groupId>
|
||||
<artifactId>redback-authorization-api</artifactId>
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.archiva.rest.api.services;
|
|||
* 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;
|
||||
|
@ -45,11 +46,26 @@ public interface RepositoriesService
|
|||
@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 } )
|
||||
|
|
|
@ -73,6 +73,10 @@
|
|||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>archiva-repository-layer</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>archiva-repository-scanner</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.redback</groupId>
|
||||
<artifactId>redback-authorization-api</artifactId>
|
||||
|
|
|
@ -51,6 +51,9 @@ import org.apache.archiva.repository.metadata.MetadataTools;
|
|||
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;
|
||||
|
@ -146,6 +149,9 @@ public class DefaultRepositoriesService
|
|||
@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 )
|
||||
|
@ -735,19 +741,19 @@ public class DefaultRepositoriesService
|
|||
}
|
||||
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
|
||||
|
||||
|
@ -757,6 +763,25 @@ public class DefaultRepositoriesService
|
|||
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.
|
||||
|
|
Loading…
Reference in New Issue