You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2009/12/23 02:02:15 UTC

svn commit: r893369 - in /archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src: main/java/org/apache/archiva/metadata/repository/file/ test/java/org/apache/archiva/metadata/repository/file/

Author: brett
Date: Wed Dec 23 01:02:15 2009
New Revision: 893369

URL: http://svn.apache.org/viewvc?rev=893369&view=rev
Log:
[MRM-1282] avoid creating invalid facets

Modified:
    archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
    archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java

Modified: archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java?rev=893369&r1=893368&r2=893369&view=diff
==============================================================================
--- archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java (original)
+++ archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java Wed Dec 23 01:02:15 2009
@@ -766,26 +766,30 @@
                 i++;
             }
 
-            for ( String facetId : properties.getProperty( "facetIds" ).split( "," ) )
+            String facetIds = properties.getProperty( "facetIds", "" );
+            if ( facetIds.length() > 0 )
             {
-                MetadataFacetFactory factory = metadataFacetFactories.get( facetId );
-                if ( factory == null )
+                for ( String facetId : facetIds.split( "," ) )
                 {
-                    log.error( "Attempted to load unknown metadata facet: " + facetId );
-                }
-                else
-                {
-                    MetadataFacet facet = factory.createMetadataFacet();
-                    Map<String, String> map = new HashMap<String, String>();
-                    for ( String key : properties.stringPropertyNames() )
+                    MetadataFacetFactory factory = metadataFacetFactories.get( facetId );
+                    if ( factory == null )
+                    {
+                        log.error( "Attempted to load unknown metadata facet: " + facetId );
+                    }
+                    else
                     {
-                        if ( key.startsWith( facet.getFacetId() ) )
+                        MetadataFacet facet = factory.createMetadataFacet();
+                        Map<String, String> map = new HashMap<String, String>();
+                        for ( String key : properties.stringPropertyNames() )
                         {
-                            map.put( key, properties.getProperty( key ) );
+                            if ( key.startsWith( facet.getFacetId() ) )
+                            {
+                                map.put( key, properties.getProperty( key ) );
+                            }
                         }
+                        facet.fromProperties( map );
+                        versionMetadata.addFacet( facet );
                     }
-                    facet.fromProperties( map );
-                    versionMetadata.addFacet( facet );
                 }
             }
 

Modified: archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java?rev=893369&r1=893368&r2=893369&view=diff
==============================================================================
--- archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java (original)
+++ archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java Wed Dec 23 01:02:15 2009
@@ -25,6 +25,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -75,14 +76,24 @@
         FileUtils.deleteDirectory( directory );
         repository.setDirectory( directory );
 
-        repository.setMetadataFacetFactories(
-            Collections.<String, MetadataFacetFactory>singletonMap( TEST_FACET_ID, new MetadataFacetFactory()
+        Map<String, MetadataFacetFactory> factories = new HashMap<String, MetadataFacetFactory>();
+        factories.put( TEST_FACET_ID, new MetadataFacetFactory()
+        {
+            public MetadataFacet createMetadataFacet()
             {
-                public MetadataFacet createMetadataFacet()
-                {
-                    return new TestMetadataFacet( "test-metadata" );
-                }
-            } ) );
+                return new TestMetadataFacet( "test-metadata" );
+            }
+        } );
+
+        // add to ensure we don't accidentally create an empty facet ID.
+        factories.put( "", new MetadataFacetFactory()
+        {
+            public MetadataFacet createMetadataFacet()
+            {
+                return new TestMetadataFacet( "", "test-value" );
+            }
+        } );
+        repository.setMetadataFacetFactories( factories );
     }
 
     public void testRootNamespaceWithNoMetadataRepository()
@@ -123,6 +134,23 @@
         assertEquals( "baz", testFacet.getValue() );
     }
 
+    public void testUpdateProjectVersionMetadataWithNoExistingFacets()
+    {
+        ProjectVersionMetadata 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.<String>emptyList(), new ArrayList<String>( 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.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) );
+    }
+
     public void testGetMetadataFacet()
     {
         repository.addMetadataFacet( TEST_REPO_ID, new TestMetadataFacet( TEST_VALUE ) );
@@ -514,16 +542,25 @@
     private static class TestMetadataFacet
         implements MetadataFacet
     {
+        private String testFacetId;
+
         private TestMetadataFacet( String value )
         {
             this.value = value;
+            testFacetId = TEST_FACET_ID;
+        }
+
+        private TestMetadataFacet( String facetId, String value )
+        {
+            this.value = value;
+            testFacetId = facetId;
         }
 
         private String value;
 
         public String getFacetId()
         {
-            return TEST_FACET_ID;
+            return testFacetId;
         }
 
         public String getName()
@@ -535,7 +572,7 @@
         {
             if ( value != null )
             {
-                return Collections.singletonMap( TEST_FACET_ID + ":foo", value );
+                return Collections.singletonMap( testFacetId + ":foo", value );
             }
             else
             {
@@ -545,7 +582,7 @@
 
         public void fromProperties( Map<String, String> properties )
         {
-            String value = properties.get( TEST_FACET_ID + ":foo" );
+            String value = properties.get( testFacetId + ":foo" );
             if ( value != null )
             {
                 this.value = value;