Author: brett
Date: Thu Nov 26 02:24:35 2009
New Revision: 884372

URL: http://svn.apache.org/viewvc?rev=884372&view=rev
Log:
[MRM-1282] support storing facet content in the file metadata repository

Added:
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
   (with props)
Modified:
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionFacet.java
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java
    
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/pom.xml
    
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java

Added: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java?rev=884372&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java
 Thu Nov 26 02:24:35 2009
@@ -0,0 +1,25 @@
+package org.apache.archiva.metadata.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+public interface MetadataFacetFactory
+{
+    ProjectVersionFacet createProjectVersionFacet();
+}

Propchange: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionFacet.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionFacet.java?rev=884372&r1=884371&r2=884372&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionFacet.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionFacet.java
 Thu Nov 26 02:24:35 2009
@@ -1,7 +1,5 @@
 package org.apache.archiva.metadata.model;
 
-import java.util.Map;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,9 +19,13 @@
  * under the License.
  */
 
+import java.util.Map;
+
 public interface ProjectVersionFacet
 {
     String getFacetId();
 
     Map<String, String> toProperties();
+
+    void fromProperties( Map<String, String> properties );
 }

Modified: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java?rev=884372&r1=884371&r2=884372&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java
 Thu Nov 26 02:24:35 2009
@@ -84,16 +84,32 @@
 
     public Map<String, String> toProperties()
     {
-        Map<String, String> properties = new HashMap<String,String>();
-        properties.put( getFacetId() + ":groupId", groupId );
-        properties.put( getFacetId() + ":artifactId", artifactId );
-        properties.put( getFacetId() + ":packaging", packaging );
+        HashMap<String, String> properties = new HashMap<String, String>();
+        properties.put( FACET_ID + ":groupId", groupId );
+        properties.put( FACET_ID + ":artifactId", artifactId );
+        properties.put( FACET_ID + ":packaging", packaging );
         if ( parent != null )
         {
-            properties.put( getFacetId() + ":parent.groupId", 
parent.getGroupId() );
-            properties.put( getFacetId() + ":parent.artifactId", 
parent.getArtifactId() );
-            properties.put( getFacetId() + ":parent.version", 
parent.getVersion() );
+            properties.put( FACET_ID + ":parent.groupId", parent.getGroupId() 
);
+            properties.put( FACET_ID + ":parent.artifactId", 
parent.getArtifactId() );
+            properties.put( FACET_ID + ":parent.version", parent.getVersion() 
);
         }
         return properties;
     }
+
+    public void fromProperties( Map<String, String> properties )
+    {
+        groupId = properties.get( FACET_ID + ":groupId" );
+        artifactId = properties.get( FACET_ID + ":artifactId" );
+        packaging = properties.get( FACET_ID + ":packaging" );
+        String parentArtifactId = properties.get( FACET_ID + 
":parent.artifactId" );
+        if ( parentArtifactId != null )
+        {
+            MavenProjectParent parent = new MavenProjectParent();
+            parent.setGroupId( properties.get( FACET_ID + ":parent.groupId" ) 
);
+            parent.setArtifactId( parentArtifactId );
+            parent.setVersion( properties.get( FACET_ID + ":parent.version" ) 
);
+            this.parent = parent;
+        }
+    }
 }

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java?rev=884372&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
 Thu Nov 26 02:24:35 2009
@@ -0,0 +1,35 @@
+package org.apache.archiva.metadata.repository.storage.maven2;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.metadata.model.MetadataFacetFactory;
+import org.apache.archiva.metadata.model.ProjectVersionFacet;
+
+/**
+ * @plexus.component 
role="org.apache.archiva.metadata.model.MetadataFacetFactory" 
role-hint="org.apache.archiva.metadata.repository.storage.maven2"
+ */
+public class MavenProjectFacetFactory
+    implements MetadataFacetFactory
+{
+    public ProjectVersionFacet createProjectVersionFacet()
+    {
+        return new MavenProjectFacet();
+    }
+}

Propchange: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/pom.xml?rev=884372&r1=884371&r2=884372&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/pom.xml
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/pom.xml
 Thu Nov 26 02:24:35 2009
@@ -36,5 +36,9 @@
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
   </dependencies>
 </project>

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=884372&r1=884371&r2=884372&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
 Thu Nov 26 02:24:35 2009
@@ -26,6 +26,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -34,6 +35,7 @@
 import org.apache.archiva.metadata.model.CiManagement;
 import org.apache.archiva.metadata.model.IssueManagement;
 import org.apache.archiva.metadata.model.License;
+import org.apache.archiva.metadata.model.MetadataFacetFactory;
 import org.apache.archiva.metadata.model.Organization;
 import org.apache.archiva.metadata.model.ProjectMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionFacet;
@@ -41,6 +43,8 @@
 import org.apache.archiva.metadata.model.Scm;
 import org.apache.archiva.metadata.repository.MetadataRepository;
 import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @plexus.component 
role="org.apache.archiva.metadata.repository.MetadataRepository"
@@ -55,6 +59,13 @@
      */
     private File directory = new File( System.getProperty( "user.home" ), 
".archiva-metadata" );
 
+    /**
+     * @plexus.requirement 
role="org.apache.archiva.metadata.model.MetadataFacetFactory"
+     */
+    private Map<String, MetadataFacetFactory> metadataFacetFactories;
+
+    private static final Logger log = LoggerFactory.getLogger( 
FileMetadataRepository.class );
+
     public void updateProject( String repoId, ProjectMetadata project )
     {
         // TODO: this is a more braindead implementation than we would 
normally expect, for prototyping purposes
@@ -287,9 +298,25 @@
 
             for ( String facetId : properties.getProperty( "facetIds" ).split( 
"," ) )
             {
-                // TODO: we need a factory for the facets here
-                // call fromProperties( properties )
-//                versionMetadata.addFacet(  );
+                MetadataFacetFactory factory = metadataFacetFactories.get( 
facetId );
+                if ( factory == null )
+                {
+                    log.error( "Attempted to load unknown metadata facet: " + 
facetId );
+                }
+                else
+                {
+                    ProjectVersionFacet facet = 
factory.createProjectVersionFacet();
+                    Map<String, String> map = new HashMap<String, String>();
+                    for ( String key : properties.stringPropertyNames() )
+                    {
+                        if ( key.startsWith( facet.getFacetId() ) )
+                        {
+                            map.put( key, properties.getProperty( key ) );
+                        }
+                    }
+                    facet.fromProperties( map );
+                    versionMetadata.addFacet( facet );
+                }
             }
 
             for ( ProjectVersionFacet facet : versionMetadata.getAllFacets() )


Reply via email to