mirror of
https://github.com/apache/archiva.git
synced 2025-02-21 01:15:08 +00:00
[MRM-1282] correct updating of facets in the file-based repository
git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-1025@885466 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d0aaf12ca1
commit
1cf0f9f7a5
@ -116,7 +116,7 @@ public void updateProjectVersion( String repoId, String namespace, String projec
|
||||
// remove properties that are not references or artifacts
|
||||
for ( String name : properties.stringPropertyNames() )
|
||||
{
|
||||
if ( !name.startsWith( "artifact:" ) && !name.startsWith( "ref:" ) )
|
||||
if ( !name.contains( ":" ) && !name.equals( "facetIds" ) )
|
||||
{
|
||||
properties.remove( name );
|
||||
}
|
||||
@ -176,7 +176,10 @@ public void updateProjectVersion( String repoId, String namespace, String projec
|
||||
setProperty( properties, "dependency." + i + ".type", dependency.getType() );
|
||||
i++;
|
||||
}
|
||||
properties.setProperty( "facetIds", join( versionMetadata.getFacetIds() ) );
|
||||
Set<String> facetIds = new LinkedHashSet<String>( versionMetadata.getFacetIds() );
|
||||
facetIds.addAll( Arrays.asList( properties.getProperty( "facetIds", "" ).split( "," ) ) );
|
||||
properties.setProperty( "facetIds", join( facetIds ) );
|
||||
|
||||
for ( ProjectVersionFacet facet : versionMetadata.getFacetList() )
|
||||
{
|
||||
properties.putAll( facet.toProperties() );
|
||||
@ -613,4 +616,9 @@ public void setDirectory( File directory )
|
||||
{
|
||||
this.directory = directory;
|
||||
}
|
||||
|
||||
public void setMetadataFacetFactories( Map<String, MetadataFacetFactory> metadataFacetFactories )
|
||||
{
|
||||
this.metadataFacetFactories = metadataFacetFactories;
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.archiva.metadata.model.MailingList;
|
||||
import org.apache.archiva.metadata.model.MetadataFacetFactory;
|
||||
import org.apache.archiva.metadata.model.ProjectVersionFacet;
|
||||
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
@ -40,6 +43,8 @@ public class FileMetadataRepositoryTest
|
||||
|
||||
private static final String TEST_NAMESPACE = "namespace";
|
||||
|
||||
private static final String TEST_PROJECT_VERSION = "1.0";
|
||||
|
||||
public void setUp()
|
||||
throws Exception
|
||||
{
|
||||
@ -60,11 +65,72 @@ public void testRootNamespaceWithNoMetadataRepository()
|
||||
public void testUpdateProjectVersionMetadataWithNoOtherArchives()
|
||||
{
|
||||
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
||||
metadata.setId( TEST_PROJECT );
|
||||
metadata.setId( TEST_PROJECT_VERSION );
|
||||
MailingList mailingList = new MailingList();
|
||||
mailingList.setName( "Foo List" );
|
||||
mailingList.setOtherArchives( Collections.<String>emptyList() );
|
||||
metadata.setMailingLists( Collections.singletonList( mailingList ) );
|
||||
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
||||
}
|
||||
|
||||
public void testUpdateProjectVersionMetadataWithExistingFacets()
|
||||
{
|
||||
repository.setMetadataFacetFactories(
|
||||
Collections.<String, MetadataFacetFactory>singletonMap( "test", new MetadataFacetFactory()
|
||||
{
|
||||
public ProjectVersionFacet createProjectVersionFacet()
|
||||
{
|
||||
return new TestProjectVersionFacet( "bar" );
|
||||
}
|
||||
} ) );
|
||||
|
||||
ProjectVersionMetadata metadata = new ProjectVersionMetadata();
|
||||
metadata.setId( TEST_PROJECT_VERSION );
|
||||
ProjectVersionFacet facet = new TestProjectVersionFacet( "baz" );
|
||||
metadata.addFacet( facet );
|
||||
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
||||
|
||||
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||
assertEquals( Collections.singleton( "test" ), metadata.getFacetIds() );
|
||||
|
||||
metadata = new ProjectVersionMetadata();
|
||||
metadata.setId( TEST_PROJECT_VERSION );
|
||||
repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
|
||||
|
||||
metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
|
||||
assertEquals( Collections.singleton( "test" ), metadata.getFacetIds() );
|
||||
TestProjectVersionFacet testFacet = (TestProjectVersionFacet) metadata.getFacet( "test" );
|
||||
assertEquals( "baz", testFacet.getValue() );
|
||||
}
|
||||
|
||||
private static class TestProjectVersionFacet
|
||||
implements ProjectVersionFacet
|
||||
{
|
||||
private TestProjectVersionFacet( String value )
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
private String value;
|
||||
|
||||
public String getFacetId()
|
||||
{
|
||||
return "test";
|
||||
}
|
||||
|
||||
public Map<String, String> toProperties()
|
||||
{
|
||||
return Collections.singletonMap( "test:foo", value );
|
||||
}
|
||||
|
||||
public void fromProperties( Map<String, String> properties )
|
||||
{
|
||||
value = properties.get( "test:foo" );
|
||||
}
|
||||
|
||||
public String getValue()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user