mirror of https://github.com/apache/archiva.git
[MRM-1303] fixed npe in delete artifact + unit test
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1031518 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b719ecb818
commit
031f607b73
|
@ -339,7 +339,7 @@ public class DeleteArtifactAction
|
||||||
|
|
||||||
if ( !VersionUtil.isSnapshot( version ) )
|
if ( !VersionUtil.isSnapshot( version ) )
|
||||||
{
|
{
|
||||||
if ( metadata.getReleasedVersion().equals( version ) )
|
if ( metadata.getReleasedVersion() != null && metadata.getReleasedVersion().equals( version ) )
|
||||||
{
|
{
|
||||||
metadata.setReleasedVersion( latestVersion );
|
metadata.setReleasedVersion( latestVersion );
|
||||||
}
|
}
|
||||||
|
@ -404,4 +404,19 @@ public class DeleteArtifactAction
|
||||||
{
|
{
|
||||||
return listeners;
|
return listeners;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRepositoryFactory( RepositoryContentFactory repositoryFactory )
|
||||||
|
{
|
||||||
|
this.repositoryFactory = repositoryFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfiguration( ArchivaConfiguration configuration )
|
||||||
|
{
|
||||||
|
this.configuration = configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMetadataRepository( MetadataRepository metadataRepository )
|
||||||
|
{
|
||||||
|
this.metadataRepository = metadataRepository;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,17 +20,137 @@ package org.apache.maven.archiva.web.action;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import com.opensymphony.xwork2.Action;
|
import com.opensymphony.xwork2.Action;
|
||||||
|
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
||||||
|
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||||
|
import org.apache.maven.archiva.configuration.Configuration;
|
||||||
|
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||||
|
import org.apache.maven.archiva.repository.ManagedRepositoryContent;
|
||||||
|
import org.apache.maven.archiva.repository.RepositoryContentFactory;
|
||||||
|
import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
|
||||||
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
||||||
|
import org.easymock.MockControl;
|
||||||
|
import org.easymock.classextension.MockClassControl;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public class DeleteArtifactActionTest
|
public class DeleteArtifactActionTest
|
||||||
extends PlexusInSpringTestCase
|
extends PlexusInSpringTestCase
|
||||||
{
|
{
|
||||||
|
private DeleteArtifactAction action;
|
||||||
|
|
||||||
|
private ArchivaConfiguration configuration;
|
||||||
|
|
||||||
|
private MockControl configurationControl;
|
||||||
|
|
||||||
|
private RepositoryContentFactory repositoryFactory;
|
||||||
|
|
||||||
|
private MockControl repositoryFactoryControl;
|
||||||
|
|
||||||
|
private MetadataRepository metadataRepository;
|
||||||
|
|
||||||
|
private MockControl metadataRepositoryControl;
|
||||||
|
|
||||||
|
private static final String REPOSITORY_ID = "test-repo";
|
||||||
|
|
||||||
|
private static final String GROUP_ID = "org.apache.archiva";
|
||||||
|
|
||||||
|
private static final String ARTIFACT_ID = "npe-metadata";
|
||||||
|
|
||||||
|
private static final String VERSION = "1.0";
|
||||||
|
|
||||||
|
private static final String REPO_LOCATION = getBasedir() + "/target/test-classes/test-repo";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setUp()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
action = (DeleteArtifactAction) lookup( Action.class.getName(), "deleteArtifactAction" );
|
||||||
|
assertNotNull( action );
|
||||||
|
|
||||||
|
configurationControl = MockControl.createControl( ArchivaConfiguration.class );
|
||||||
|
configuration = ( ArchivaConfiguration ) configurationControl.getMock();
|
||||||
|
|
||||||
|
repositoryFactoryControl = MockClassControl.createControl( RepositoryContentFactory.class );
|
||||||
|
repositoryFactory = ( RepositoryContentFactory ) repositoryFactoryControl.getMock();
|
||||||
|
|
||||||
|
metadataRepositoryControl = MockControl.createControl( MetadataRepository.class );
|
||||||
|
metadataRepository = ( MetadataRepository ) metadataRepositoryControl.getMock();
|
||||||
|
|
||||||
|
action.setConfiguration( configuration );
|
||||||
|
action.setRepositoryFactory( repositoryFactory );
|
||||||
|
action.setMetadataRepository( metadataRepository );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void tearDown()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
action = null;
|
||||||
|
|
||||||
|
super.tearDown();
|
||||||
|
}
|
||||||
|
|
||||||
public void testGetListeners()
|
public void testGetListeners()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
DeleteArtifactAction action = (DeleteArtifactAction) lookup( Action.class.getName(), "deleteArtifactAction" );
|
|
||||||
assertNotNull( action );
|
|
||||||
assertNotNull( action.getListeners() );
|
assertNotNull( action.getListeners() );
|
||||||
assertFalse( action.getListeners().isEmpty() );
|
assertFalse( action.getListeners().isEmpty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testNPEInDeleteArtifact()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
action.setGroupId( GROUP_ID );
|
||||||
|
action.setArtifactId( ARTIFACT_ID );
|
||||||
|
action.setVersion( VERSION );
|
||||||
|
action.setRepositoryId( REPOSITORY_ID );
|
||||||
|
|
||||||
|
Configuration config = createConfiguration();
|
||||||
|
|
||||||
|
ManagedRepositoryContent repoContent = new ManagedDefaultRepositoryContent();
|
||||||
|
repoContent.setRepository( config.findManagedRepositoryById( REPOSITORY_ID ) );
|
||||||
|
|
||||||
|
configurationControl.expectAndReturn( configuration.getConfiguration(), config );
|
||||||
|
repositoryFactoryControl.expectAndReturn( repositoryFactory.getManagedRepositoryContent( REPOSITORY_ID ), repoContent );
|
||||||
|
metadataRepositoryControl.expectAndReturn( metadataRepository.getArtifacts( REPOSITORY_ID, GROUP_ID, ARTIFACT_ID, VERSION ),
|
||||||
|
new ArrayList<ArtifactMetadata>() );
|
||||||
|
|
||||||
|
configurationControl.replay();
|
||||||
|
repositoryFactoryControl.replay();
|
||||||
|
metadataRepositoryControl.replay();
|
||||||
|
|
||||||
|
action.doDelete();
|
||||||
|
|
||||||
|
String artifactPath = REPO_LOCATION + "/" + StringUtils.replace( GROUP_ID, ".", "/" ) + "/" +
|
||||||
|
StringUtils.replace( ARTIFACT_ID, ".", "/" ) + "/" + VERSION + "/" + ARTIFACT_ID + "-" + VERSION;
|
||||||
|
|
||||||
|
assertFalse( new File( artifactPath + ".jar" ).exists() );
|
||||||
|
assertFalse( new File( artifactPath + ".jar.sha1" ).exists() );
|
||||||
|
assertFalse( new File( artifactPath + ".jar.md5" ).exists() );
|
||||||
|
|
||||||
|
assertFalse( new File( artifactPath + ".pom" ).exists() );
|
||||||
|
assertFalse( new File( artifactPath + ".pom.sha1" ).exists() );
|
||||||
|
assertFalse( new File( artifactPath + ".pom.md5" ).exists() );
|
||||||
|
}
|
||||||
|
|
||||||
|
private Configuration createConfiguration()
|
||||||
|
{
|
||||||
|
ManagedRepositoryConfiguration managedRepo = new ManagedRepositoryConfiguration();
|
||||||
|
managedRepo.setId( REPOSITORY_ID );
|
||||||
|
managedRepo.setName( "Test Repository" );
|
||||||
|
|
||||||
|
managedRepo.setLocation( REPO_LOCATION );
|
||||||
|
managedRepo.setReleases( true );
|
||||||
|
|
||||||
|
Configuration config = new Configuration();
|
||||||
|
config.addManagedRepository( managedRepo );
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
5b0e72a002c047e2f200855f6d904a7e
|
|
@ -0,0 +1 @@
|
||||||
|
9b3ed9b1a8f1639bcc6a6986930d71a2996ba2fe
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>npe-metadata</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
30124c5194a639f12a2fb01e7aa5a952
|
|
@ -0,0 +1 @@
|
||||||
|
83bee18c83a6f4964026587cc4ccffe653c45d0c
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<metadata>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>npe-metadata</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>1.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20101105071933</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
6b4a71798c8fcb45ee0411cc9cf68064
|
|
@ -0,0 +1 @@
|
||||||
|
33c6dbdfdb263c394082d56e349d36e893ead06f
|
Loading…
Reference in New Issue