mirror of https://github.com/apache/archiva.git
[MRM-1958] Merging fix from master tree
Replace streams with old style code Fix mock verifications
This commit is contained in:
parent
940412ebfb
commit
85687a34e0
|
@ -36,8 +36,13 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.DirectoryStream;
|
||||||
|
import java.nio.file.FileVisitOption;
|
||||||
|
import java.nio.file.FileVisitResult;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.SimpleFileVisitor;
|
||||||
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
@ -400,9 +405,7 @@ public abstract class AbstractRepositoryPurge
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Files.find( parentDir, 3,
|
deleteArtifactFiles( parentDir, 3, artifactName );
|
||||||
( path, basicFileAttributes ) -> path.getFileName( ).toString( ).startsWith( artifactName )
|
|
||||||
&& Files.isRegularFile( path ) ).forEach( this::deleteSilently );
|
|
||||||
}
|
}
|
||||||
catch ( IOException e )
|
catch ( IOException e )
|
||||||
{
|
{
|
||||||
|
@ -411,6 +414,29 @@ public abstract class AbstractRepositoryPurge
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void deleteArtifactFiles(final Path directory, final int maxDepth, final String artifactName) throws IOException
|
||||||
|
{
|
||||||
|
Files.walkFileTree(directory, new HashSet<FileVisitOption>( ), maxDepth, new SimpleFileVisitor<Path>() {
|
||||||
|
@Override
|
||||||
|
public FileVisitResult visitFile( Path file, BasicFileAttributes attrs) throws IOException {
|
||||||
|
if (file.getFileName().toString().startsWith(artifactName)) {
|
||||||
|
try {
|
||||||
|
Files.delete( file );
|
||||||
|
} catch (IOException e) {
|
||||||
|
// We do not stop, if an error occurs.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void triggerAuditEvent( String repoId, String resource, String action )
|
private void triggerAuditEvent( String repoId, String resource, String action )
|
||||||
{
|
{
|
||||||
String msg =
|
String msg =
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.archiva.consumers.core;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
|
||||||
import org.apache.archiva.common.utils.BaseFile;
|
import org.apache.archiva.common.utils.BaseFile;
|
||||||
import org.apache.archiva.configuration.ArchivaConfiguration;
|
import org.apache.archiva.configuration.ArchivaConfiguration;
|
||||||
import org.apache.archiva.configuration.FileType;
|
import org.apache.archiva.configuration.FileType;
|
||||||
|
|
|
@ -20,9 +20,11 @@ package org.apache.archiva.consumers.core.repository;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.archiva.admin.model.beans.ManagedRepository;
|
import org.apache.archiva.admin.model.beans.ManagedRepository;
|
||||||
|
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
|
||||||
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
||||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||||
import org.apache.archiva.metadata.repository.RepositorySession;
|
import org.apache.archiva.metadata.repository.RepositorySession;
|
||||||
|
import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
|
||||||
import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
|
import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
|
||||||
import org.apache.archiva.repository.ManagedRepositoryContent;
|
import org.apache.archiva.repository.ManagedRepositoryContent;
|
||||||
import org.apache.archiva.repository.events.RepositoryListener;
|
import org.apache.archiva.repository.events.RepositoryListener;
|
||||||
|
@ -43,12 +45,16 @@ import org.springframework.test.context.ContextConfiguration;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.FileVisitOption;
|
||||||
|
import java.nio.file.FileVisitResult;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.nio.file.SimpleFileVisitor;
|
||||||
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
@ -231,13 +237,27 @@ public abstract class AbstractRepositoryPurgeTest
|
||||||
return StringUtils.substringAfterLast( getClass().getName(), "." );
|
return StringUtils.substringAfterLast( getClass().getName(), "." );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<ArtifactMetadata> getArtifactMetadataFromDir( String repoId, String projectName, Path repoDir, Path vDir ) throws IOException
|
protected List<ArtifactMetadata> getArtifactMetadataFromDir( final String repoId, final String projectName, final Path repoDir, final Path vDir ) throws IOException
|
||||||
{
|
{
|
||||||
Maven2RepositoryPathTranslator translator = new Maven2RepositoryPathTranslator( new ArrayList<>( ) );
|
final Maven2RepositoryPathTranslator translator = new Maven2RepositoryPathTranslator( new ArrayList<ArtifactMappingProvider>( ) );
|
||||||
return Files.find(vDir, 1,
|
final List<ArtifactMetadata> result = new ArrayList<>( );
|
||||||
(path, basicFileAttributes) -> basicFileAttributes.isRegularFile() && path.getFileName().toString().startsWith(projectName))
|
Files.walkFileTree(vDir, new HashSet<FileVisitOption>( ), 1, new SimpleFileVisitor<Path>() {
|
||||||
.map( path ->
|
@Override
|
||||||
translator.getArtifactForPath( repoId, repoDir.relativize( path ).toString() )
|
public FileVisitResult visitFile( Path file, BasicFileAttributes attrs) throws IOException {
|
||||||
).collect( Collectors.toList());
|
if (file.getFileName().toString().startsWith(projectName)) {
|
||||||
|
ArtifactMetadata m = translator.getArtifactForPath( repoId, repoDir.relativize( file ).toString() );
|
||||||
|
result.add(m);
|
||||||
}
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -386,8 +386,8 @@ public class RepositoryPurgeConsumerTest
|
||||||
|
|
||||||
verify(metadataRepository, never()).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
|
verify(metadataRepository, never()).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
|
||||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||||
verify(metadataRepository, never()).removeArtifact(any(), any());
|
verify(metadataRepository, never()).removeArtifact(any(ArtifactMetadata.class), any(String.class));
|
||||||
verify(metadataRepository, never()).removeArtifact( any(), any(), any(), any(), any(MetadataFacet.class) );
|
verify(metadataRepository, never()).removeArtifact( any(String.class), any(String.class), any(String.class), any(String.class), any(MetadataFacet.class) );
|
||||||
|
|
||||||
// check if the snapshot wasn't removed
|
// check if the snapshot wasn't removed
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ public class RepositoryPurgeConsumerTest
|
||||||
|
|
||||||
verify(metadataRepository, times(1)).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
|
verify(metadataRepository, times(1)).removeProjectVersion(eq(TEST_REPO_ID), eq(projectNs), eq(projectName), eq(projectVersion));
|
||||||
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
ArgumentCaptor<ArtifactMetadata> metadataArg = ArgumentCaptor.forClass(ArtifactMetadata.class);
|
||||||
verify(metadataRepository, never()).removeArtifact(any(), any());
|
verify(metadataRepository, never()).removeArtifact(any(ArtifactMetadata.class), any(String.class));
|
||||||
|
|
||||||
// check if the snapshot was removed
|
// check if the snapshot was removed
|
||||||
assertDeleted( projectRoot + "/2.3-SNAPSHOT" );
|
assertDeleted( projectRoot + "/2.3-SNAPSHOT" );
|
||||||
|
|
Loading…
Reference in New Issue