fix storing MetadataFacet at repository level with empty values
git-svn-id: https://svn.apache.org/repos/asf/archiva/sandbox/trunk@1491196 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
index c5b8a58..8860ebb 100644
--- a/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
+++ b/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
@@ -1080,30 +1080,28 @@
throws MetadataRepositoryException
{
- if ( metadataFacet == null || metadataFacet.toProperties() == null || metadataFacet.toProperties().isEmpty() )
+ if ( metadataFacet == null )
{
return;
}
- for ( Map.Entry<String, String> entry : metadataFacet.toProperties().entrySet() )
+
+ if ( metadataFacet.toProperties().isEmpty() )
{
-
String key = new MetadataFacetModel.KeyBuilder().withRepositoryId( repositoryId ).withFacetId(
- metadataFacet.getFacetId() ).withName( metadataFacet.getName() ).withKey( entry.getKey() ).build();
-
+ metadataFacet.getFacetId() ).withName( metadataFacet.getName() ).build();
MetadataFacetModel metadataFacetModel = metadataFacetModelEntityManager.get( key );
if ( metadataFacetModel == null )
{
metadataFacetModel = new MetadataFacetModel();
- // we need to store the repositoryId
- ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel();
- artifactMetadataModel.setRepositoryId( repositoryId );
- metadataFacetModel.setArtifactMetadataModel( artifactMetadataModel );
- metadataFacetModel.setId( key );
- metadataFacetModel.setKey( entry.getKey() );
- metadataFacetModel.setFacetId( metadataFacet.getFacetId() );
- metadataFacetModel.setName( metadataFacetModel.getName() );
}
- metadataFacetModel.setValue( entry.getValue() );
+ // we need to store the repositoryId
+ ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel();
+ artifactMetadataModel.setRepositoryId( repositoryId );
+ metadataFacetModel.setArtifactMetadataModel( artifactMetadataModel );
+ metadataFacetModel.setId( key );
+ metadataFacetModel.setFacetId( metadataFacet.getFacetId() );
+ metadataFacetModel.setName( metadataFacetModel.getName() );
+
try
{
metadataFacetModelEntityManager.put( metadataFacetModel );
@@ -1112,7 +1110,39 @@
{
throw new MetadataRepositoryException( e.getMessage(), e );
}
+ }
+ else
+ {
+ for ( Map.Entry<String, String> entry : metadataFacet.toProperties().entrySet() )
+ {
+ String key = new MetadataFacetModel.KeyBuilder().withRepositoryId( repositoryId ).withFacetId(
+ metadataFacet.getFacetId() ).withName( metadataFacet.getName() ).withKey( entry.getKey() ).build();
+
+ MetadataFacetModel metadataFacetModel = metadataFacetModelEntityManager.get( key );
+ if ( metadataFacetModel == null )
+ {
+ metadataFacetModel = new MetadataFacetModel();
+ // we need to store the repositoryId
+ ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel();
+ artifactMetadataModel.setRepositoryId( repositoryId );
+ metadataFacetModel.setArtifactMetadataModel( artifactMetadataModel );
+ metadataFacetModel.setId( key );
+ metadataFacetModel.setKey( entry.getKey() );
+ metadataFacetModel.setFacetId( metadataFacet.getFacetId() );
+ metadataFacetModel.setName( metadataFacetModel.getName() );
+ }
+ metadataFacetModel.setValue( entry.getValue() );
+ try
+ {
+ metadataFacetModelEntityManager.put( metadataFacetModel );
+ }
+ catch ( PersistenceException e )
+ {
+ throw new MetadataRepositoryException( e.getMessage(), e );
+ }
+
+ }
}
}