Author: brett
Date: Wed Nov 25 00:45:57 2009
New Revision: 883936

URL: http://svn.apache.org/viewvc?rev=883936&view=rev
Log:
[MRM-1282] introduce a metadata resolver API that will allow just-in-time 
addition to the content repository and the ability to introduce proxying

Added:
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
   (contents, props changed)
      - copied, changed from r883603, 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/MemoryMetadataRepository.java
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
   (with props)
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/repositories/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/repositories/test/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/repositories/test/org/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/repositories/test/org/apache/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/repositories/test/org/apache/apache/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/repositories/test/org/apache/archiva/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/
    
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml
   (with props)
Removed:
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/MemoryMetadataRepository.java
Modified:
    archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/   
(props changed)
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/ShowArtifactActionTest.java
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/ShowArtifactActionTest.xml
    
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
    archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/   
(props changed)
    archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/pom.xml
    
archiva/branches/MRM-1025/archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java

Propchange: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Nov 25 00:45:57 2009
@@ -1,4 +1,5 @@
 appserver-base
+overlays
 target
 .deployment
 *~

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=883936&r1=883935&r2=883936&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
 Wed Nov 25 00:45:57 2009
@@ -25,7 +25,7 @@
 
 import com.opensymphony.xwork2.Validateable;
 import org.apache.archiva.metadata.model.ProjectBuildMetadata;
-import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolver;
 import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
@@ -71,7 +71,7 @@
     /**
      * @plexus.requirement
      */
-    private MetadataRepository metadataRepository;
+    private MetadataResolver metadataResolver;
 
     /* .\ Exposed Output Objects \.__________________________________ */
 
@@ -112,16 +112,16 @@
         {
             if ( build == null )
             {
-                // TODO: we don't really want the implementation being that 
intelligent - so another resolver to do
-                //  the "just-in-time" nature of picking up the metadata (if 
appropriate for the repository type) if not
-                //  found in the content repository is needed here
-                build = metadataRepository.getProjectBuild( repoId, groupId, 
artifactId, version );
+                // we don't really want the implementation being that 
intelligent - so another resolver to do the
+                // "just-in-time" nature of picking up the metadata (if 
appropriate for the repository type) is used
+                build = metadataResolver.getProjectBuild( repoId, groupId, 
artifactId, version );
                 if ( build != null )
                 {
                     repositoryId = repoId;      
                 }
             }
-            snapshotVersions.addAll( metadataRepository.getArtifactVersions( 
repoId, groupId, artifactId, version ) );
+
+            snapshotVersions.addAll( metadataResolver.getArtifactVersions( 
repoId, groupId, artifactId, version ) );
             snapshotVersions.remove( version );
         }
 
@@ -365,8 +365,8 @@
         this.snapshotVersions = snapshotVersions;
     }
 
-    public MetadataRepository getMetadataRepository()
+    public MetadataResolver getMetadataRepository()
     {
-        return metadataRepository;
+        return metadataResolver;
     }
 }

Copied: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
 (from r883603, 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/MemoryMetadataRepository.java)
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java?p2=archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java&p1=archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/MemoryMetadataRepository.java&r1=883603&r2=883936&rev=883936&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/MemoryMetadataRepository.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
 Wed Nov 25 00:45:57 2009
@@ -25,33 +25,17 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.ProjectBuildMetadata;
 import org.apache.archiva.metadata.model.ProjectMetadata;
-import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolver;
 
-public class MemoryMetadataRepository
-    implements MetadataRepository
+public class TestMetadataResolver
+    implements MetadataResolver
 {
     private Map<String, ProjectBuildMetadata> projectBuilds = new 
HashMap<String, ProjectBuildMetadata>();
 
     private Map<String, List<String>> artifactVersions = new HashMap<String, 
List<String>>();
 
-    public void updateProject( String repoId, ProjectMetadata project )
-    {
-        throw new UnsupportedOperationException( );
-    }
-
-    public void updateArtifact( String repoId, String namespace, String 
projectId, String buildId, ArtifactMetadata artifactMeta )
-    {
-        throw new UnsupportedOperationException( );
-    }
-
-    public void updateBuild( String repoId, String namespace, String 
projectId, ProjectBuildMetadata build )
-    {
-        throw new UnsupportedOperationException( );
-    }
-
     public ProjectMetadata getProject( String repoId, String namespace, String 
projectId )
     {
         ProjectMetadata metadata = new ProjectMetadata();

Propchange: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/ShowArtifactActionTest.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/ShowArtifactActionTest.java?rev=883936&r1=883935&r2=883936&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/ShowArtifactActionTest.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/ShowArtifactActionTest.java
 Wed Nov 25 00:45:57 2009
@@ -30,7 +30,7 @@
 import org.apache.archiva.metadata.model.Organization;
 import org.apache.archiva.metadata.model.ProjectBuildMetadata;
 import org.apache.archiva.metadata.model.Scm;
-import org.apache.archiva.metadata.repository.memory.MemoryMetadataRepository;
+import org.apache.archiva.metadata.repository.memory.TestMetadataResolver;
 import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
 import 
org.apache.archiva.metadata.repository.storage.maven2.MavenProjectParent;
 import org.apache.maven.archiva.model.ArchivaProjectModel;
@@ -102,7 +102,7 @@
 
     private ShowArtifactAction action;
 
-    private MemoryMetadataRepository metadataRepository;
+    private TestMetadataResolver metadataResolver;
 
     public void testInstantiation()
     {
@@ -111,7 +111,7 @@
 
     public void testGetArtifactUniqueRelease()
     {
-        metadataRepository.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
 
         setActionParameters();
@@ -134,9 +134,9 @@
 
     public void testGetArtifactUniqueSnapshot()
     {
-        metadataRepository.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( 
TEST_SNAPSHOT_VERSION ) );
-        metadataRepository.setArtifactVersions( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID, TEST_SNAPSHOT_VERSION,
+        metadataResolver.setArtifactVersions( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID, TEST_SNAPSHOT_VERSION,
                                                 ALL_TEST_SNAPSHOT_VERSIONS );
 
         action.setGroupId( TEST_GROUP_ID );
@@ -164,9 +164,9 @@
 
     public void testGetArtifactUniqueSnapshotTimestamped()
     {
-        metadataRepository.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( 
TEST_TS_SNAPSHOT_VERSION ) );
-        metadataRepository.setArtifactVersions( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID, TEST_TS_SNAPSHOT_VERSION,
+        metadataResolver.setArtifactVersions( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID, TEST_TS_SNAPSHOT_VERSION,
                                                 ALL_TEST_SNAPSHOT_VERSIONS );
 
         action.setGroupId( TEST_GROUP_ID );
@@ -220,7 +220,7 @@
 
     public void testGetArtifactNotInObservableRepos()
     {
-        metadataRepository.setProjectBuild( OTHER_TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( OTHER_TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
 
         setActionParameters();
@@ -235,7 +235,7 @@
     public void testGetArtifactOnlySeenInSecondObservableRepo()
     {
         setObservableRepos( Arrays.asList( OTHER_TEST_REPO, TEST_REPO ) );
-        metadataRepository.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
 
         setActionParameters();
@@ -259,9 +259,9 @@
     public void testGetArtifactSeenInBothObservableRepo()
     {
         setObservableRepos( Arrays.asList( TEST_REPO, OTHER_TEST_REPO ) );
-        metadataRepository.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
-        metadataRepository.setProjectBuild( OTHER_TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( OTHER_TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
 
         setActionParameters();
@@ -285,9 +285,9 @@
     public void testGetArtifactCanOnlyObserveInOneOfTwoRepos()
     {
         setObservableRepos( Arrays.asList( TEST_REPO ) );
-        metadataRepository.setProjectBuild( OTHER_TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( OTHER_TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
-        metadataRepository.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
+        metadataResolver.setProjectBuild( TEST_REPO, TEST_GROUP_ID, 
TEST_ARTIFACT_ID,
                                             createProjectModel( TEST_VERSION ) 
);
 
         setActionParameters();
@@ -437,6 +437,6 @@
     {
         super.setUp();
         action = (ShowArtifactAction) lookup( Action.class, ACTION_HINT );
-        metadataRepository = (MemoryMetadataRepository) 
action.getMetadataRepository();
+        metadataResolver = (TestMetadataResolver) 
action.getMetadataRepository();
     }
 }

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/ShowArtifactActionTest.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/ShowArtifactActionTest.xml?rev=883936&r1=883935&r2=883936&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/ShowArtifactActionTest.xml
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/action/ShowArtifactActionTest.xml
 Wed Nov 25 00:45:57 2009
@@ -36,9 +36,9 @@
       
<implementation>org.apache.maven.archiva.security.UserRepositoriesStub</implementation>
     </component>
     <component>
-      <role>org.apache.archiva.metadata.repository.MetadataRepository</role>
+      <role>org.apache.archiva.metadata.repository.MetadataResolver</role>
       <role-hint>default</role-hint>
-      
<implementation>org.apache.archiva.metadata.repository.memory.MemoryMetadataRepository</implementation>
+      
<implementation>org.apache.archiva.metadata.repository.memory.TestMetadataResolver</implementation>
       <instantiation-strategy>per-lookup</instantiation-strategy>
     </component>
   </components>

Added: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,69 @@
+package org.apache.archiva.metadata.repository;
+
+/*
+ * 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 java.util.Collection;
+
+import org.apache.archiva.metadata.model.ProjectBuildMetadata;
+import org.apache.archiva.metadata.model.ProjectMetadata;
+
+/**
+ * @plexus.component 
role="org.apache.archiva.metadata.repository.MetadataResolver"
+ */
+public class DefaultMetadataResolver
+    implements MetadataResolver
+{
+    /**
+     * @plexus.requirement
+     */
+    private MetadataRepository metadataRepository;
+
+    /**
+     * TODO: this needs to be configurable based on storage type, and 
availability of proxy module
+     * TODO: could be a different type since we need methods to modify the 
storage metadata
+     * @plexus.requirement role-hint="maven2"
+     */
+    private MetadataResolver storageResolver;
+
+    public ProjectMetadata getProject( String repoId, String namespace, String 
projectId )
+    {
+        // TODO: intercept
+        return metadataRepository.getProject( repoId, namespace, projectId );
+    }
+
+    public ProjectBuildMetadata getProjectBuild( String repoId, String 
namespace, String projectId, String buildId )
+    {
+        ProjectBuildMetadata metadata = metadataRepository.getProjectBuild( 
repoId, namespace, projectId, buildId );
+        // TODO: do we want to detect changes as well by comparing timestamps? 
isProjectBuildNewerThan(updated)
+        //       in such cases we might also remove/update stale metadata, 
including adjusting plugin-based facets
+        if ( metadata == null )
+        {
+            metadata = storageResolver.getProjectBuild( repoId, namespace, 
projectId, buildId );
+            metadataRepository.updateBuild( repoId, namespace, projectId, 
metadata );
+        }
+        return metadata;
+    }
+
+    public Collection<String> getArtifactVersions( String repoId, String 
namespace, String projectId, String buildId )
+    {
+        // TODO: intercept
+        return metadataRepository.getArtifactVersions( repoId, namespace, 
projectId, buildId );
+    }
+}

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

Modified: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java?rev=883936&r1=883935&r2=883936&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
 Wed Nov 25 00:45:57 2009
@@ -19,13 +19,12 @@
  * under the License.
  */
 
-import java.util.Collection;
-
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.ProjectBuildMetadata;
 import org.apache.archiva.metadata.model.ProjectMetadata;
 
 public interface MetadataRepository
+    extends MetadataResolver
 {
     /**
      * Update metadata for a particular project in the metadata repository, or 
create it if it does not already exist.
@@ -37,9 +36,4 @@
 
     void updateBuild( String repoId, String namespace, String projectId, 
ProjectBuildMetadata build );
 
-    ProjectMetadata getProject( String repoId, String namespace, String 
projectId );
-
-    ProjectBuildMetadata getProjectBuild( String repoId, String namespace, 
String projectId, String buildId );
-
-    Collection<String> getArtifactVersions( String repoId, String namespace, 
String projectId, String buildId );
 }

Added: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataResolver.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,34 @@
+package org.apache.archiva.metadata.repository;
+
+/*
+ * 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 java.util.Collection;
+
+import org.apache.archiva.metadata.model.ProjectBuildMetadata;
+import org.apache.archiva.metadata.model.ProjectMetadata;
+
+public interface MetadataResolver
+{
+    ProjectMetadata getProject( String repoId, String namespace, String 
projectId );
+
+    ProjectBuildMetadata getProjectBuild( String repoId, String namespace, 
String projectId, String buildId );
+
+    Collection<String> getArtifactVersions( String repoId, String namespace, 
String projectId, String buildId );
+}

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

Added: 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,29 @@
+package org.apache.archiva.metadata.repository.storage;
+
+/*
+ * 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 java.io.File;
+
+public interface RepositoryPathTranslator
+{
+    File toFile( File basedir, String namespace, String projectId, String 
buildId, String filename );
+
+    String toPath( String namespace, String projectId, String buildId, String 
filename );
+}

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

Propchange: archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Nov 25 00:45:57 2009
@@ -1 +1,2 @@
 *.iml
+target

Modified: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/pom.xml?rev=883936&r1=883935&r2=883936&view=diff
==============================================================================
--- archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/pom.xml 
(original)
+++ archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/pom.xml 
Wed Nov 25 00:45:57 2009
@@ -32,5 +32,44 @@
       <groupId>org.apache.archiva</groupId>
       <artifactId>metadata-model</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>metadata-repository-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-spring</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model-builder</artifactId>
+      <version>3.0-alpha-4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-configuration</artifactId>
+      <version>1.3-SNAPSHOT</version>
+    </dependency>
   </dependencies>
+  <dependencyManagement>
+    <dependencies>
+      <!-- TODO: this is to override the top level dependency management - we 
need to rationalise these -->
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model</artifactId>
+        <version>3.0-alpha-4</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
 </project>

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.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/DummyLifecycleBindingsInjector.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,39 @@
+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.maven.model.Model;
+import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.plugin.LifecycleBindingsInjector;
+
+/**
+ * Required as plexus-spring doesn't understand the optional = true argument 
added to Plexus and used here.
+ *
+ * @plexus.component 
role="org.apache.maven.model.plugin.LifecycleBindingsInjector"
+ */
+public class DummyLifecycleBindingsInjector
+    implements LifecycleBindingsInjector
+{
+    public void injectLifecycleBindings( Model model, ModelBuildingRequest 
modelBuildingRequest, ModelProblemCollector modelProblemCollector )
+    {
+        // left intentionally blank
+    }
+}

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

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.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/Maven2RepositoryMetadataResolver.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,111 @@
+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 java.io.File;
+import java.util.Collection;
+
+import org.apache.archiva.metadata.model.ProjectBuildMetadata;
+import org.apache.archiva.metadata.model.ProjectMetadata;
+import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.building.DefaultModelBuildingRequest;
+import org.apache.maven.model.building.ModelBuilder;
+import org.apache.maven.model.building.ModelBuildingException;
+import org.apache.maven.model.building.ModelBuildingRequest;
+
+/**
+ * @plexus.component 
role="org.apache.archiva.metadata.repository.MetadataResolver" 
role-hint="maven2"
+ */
+public class Maven2RepositoryMetadataResolver
+    implements MetadataResolver
+{
+    /**
+     * @plexus.requirement
+     */
+    private ModelBuilder builder;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchivaConfiguration archivaConfiguration;
+
+    /**
+     * @plexus.requirement role-hint="maven2"
+     */
+    private RepositoryPathTranslator pathTranslator;
+
+    public ProjectMetadata getProject( String repoId, String namespace, String 
projectId )
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public ProjectBuildMetadata getProjectBuild( String repoId, String 
namespace, String projectId, String buildId )
+    {
+        ManagedRepositoryConfiguration repositoryConfiguration =
+            archivaConfiguration.getConfiguration().findManagedRepositoryById( 
repoId );
+
+        File basedir = new File( repositoryConfiguration.getLocation() );
+        File file = pathTranslator.toFile( basedir, namespace, projectId, 
buildId, projectId + "-" + buildId + ".pom" );
+
+        ModelBuildingRequest req = new DefaultModelBuildingRequest();
+        req.setProcessPlugins( false );
+        req.setPomFile( file );
+        req.setModelResolver( new RepositoryModelResolver( basedir, 
pathTranslator ) );
+
+        Model model;
+        try
+        {
+            model = builder.build( req ).getEffectiveModel();
+        }
+        catch ( ModelBuildingException e )
+        {
+            // TODO: handle it
+            throw new RuntimeException( e );
+        }
+
+        MavenProjectFacet facet = new MavenProjectFacet();
+        facet.setGroupId( model.getGroupId() != null ? model.getGroupId() : 
model.getParent().getGroupId() );
+        facet.setArtifactId( model.getArtifactId() );
+        facet.setPackaging( model.getPackaging() );
+        if ( model.getParent() != null )
+        {
+            MavenProjectParent parent = new MavenProjectParent();
+            parent.setGroupId( model.getParent().getGroupId() );
+            parent.setArtifactId( model.getParent().getArtifactId() );
+            parent.setVersion( model.getParent().getVersion() );
+            facet.setParent( parent );
+        }
+        ProjectBuildMetadata metadata = new ProjectBuildMetadata();
+        metadata.setUrl( model.getUrl() );
+        metadata.addFacet( facet );
+        // TODO: convert project
+
+        return metadata;
+    }
+
+    public Collection<String> getArtifactVersions( String repoId, String 
namespace, String projectId, String buildId )
+    {
+        throw new UnsupportedOperationException();
+    }
+}

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

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.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/Maven2RepositoryPathTranslator.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,57 @@
+package org.apache.archiva.metadata.repository.storage.maven2;
+
+import java.io.File;
+
+import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
+
+/*
+ * 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.
+ */
+
+/**
+ * @plexus.component 
role="org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator" 
role-hint="maven2"
+ */
+public class Maven2RepositoryPathTranslator
+    implements RepositoryPathTranslator
+{
+    private static final char PATH_SEPARATOR = '/';
+
+    private static final char GROUP_SEPARATOR = '.';
+
+    public File toFile( File basedir, String namespace, String projectId, 
String buildId, String filename )
+    {
+        return new File( basedir, toPath( namespace, projectId, buildId, 
filename ) );
+    }
+
+    public String toPath( String namespace, String projectId, String buildId, 
String filename )
+    {
+        StringBuilder path = new StringBuilder();
+
+        path.append( formatAsDirectory( namespace ) ).append( PATH_SEPARATOR );
+        path.append( projectId ).append( PATH_SEPARATOR );
+        path.append( buildId ).append( PATH_SEPARATOR );
+        path.append( filename );
+
+        return path.toString();
+    }
+
+    private String formatAsDirectory( String directory )
+    {
+        return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR );
+    }
+}

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

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.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/RepositoryModelResolver.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,66 @@
+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 java.io.File;
+
+import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
+import org.apache.maven.model.Repository;
+import org.apache.maven.model.building.FileModelSource;
+import org.apache.maven.model.building.ModelSource;
+import org.apache.maven.model.resolution.InvalidRepositoryException;
+import org.apache.maven.model.resolution.ModelResolver;
+import org.apache.maven.model.resolution.UnresolvableModelException;
+
+public class RepositoryModelResolver
+    implements ModelResolver
+{
+    private File basedir;
+
+    private RepositoryPathTranslator pathTranslator;
+
+    public RepositoryModelResolver( File basedir, RepositoryPathTranslator 
pathTranslator )
+    {
+        this.basedir = basedir;
+
+        this.pathTranslator = pathTranslator;
+    }
+
+    public ModelSource resolveModel( String groupId, String artifactId, String 
version )
+        throws UnresolvableModelException
+    {
+        String filename = artifactId + "-" + version + ".pom";
+        // TODO: we need to convert 1.0-20091120.112233-1 type paths to 
baseVersion for the below call - add a test
+        return new FileModelSource( pathTranslator.toFile( basedir, groupId, 
artifactId, version, filename ) );
+    }
+
+    public void addRepository( Repository repository )
+        throws InvalidRepositoryException
+    {
+        // we just ignore repositories outside of the current one for now
+        // TODO: it'd be nice to look them up from Archiva's set, but we want 
to do that by URL / mapping, not just the
+        //       ID since they will rarely match
+    }
+
+    public ModelResolver newCopy()
+    {
+        return new RepositoryModelResolver( basedir, pathTranslator );
+    }
+}

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

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,64 @@
+package org.apache.archiva.configuration;
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.ConfigurationListener;
+import 
org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.codehaus.plexus.registry.RegistryException;
+import org.codehaus.plexus.registry.RegistryListener;
+
+/*
+ * 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 class TestConfiguration
+    implements ArchivaConfiguration
+{
+    private Configuration configuration;
+
+    public Configuration getConfiguration()
+    {
+        return configuration;
+    }
+
+    public void save( Configuration configuration )
+        throws RegistryException, IndeterminateConfigurationException
+    {
+        this.configuration = configuration;
+    }
+
+    public boolean isDefaulted()
+    {
+        return false;
+    }
+
+    public void addListener( ConfigurationListener listener )
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeListener( ConfigurationListener listener )
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addChangeListener( RegistryListener listener )
+    {
+        throw new UnsupportedOperationException();
+    }
+}

Propchange: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,61 @@
+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.ProjectBuildMetadata;
+import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+
+public class Maven2RepositoryMetadataResolverTest
+    extends PlexusInSpringTestCase
+{
+    private Maven2RepositoryMetadataResolver resolver;
+
+    private static final String TEST_REPO_ID = "test";
+
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        ArchivaConfiguration configuration = (ArchivaConfiguration) lookup( 
ArchivaConfiguration.class );
+        Configuration c = new Configuration();
+        ManagedRepositoryConfiguration testRepo = new 
ManagedRepositoryConfiguration();
+        testRepo.setId( TEST_REPO_ID );
+        testRepo.setLocation( getTestPath( "src/test/repositories/test" ) );
+        c.addManagedRepository( testRepo );
+        configuration.save( c );
+
+        resolver = (Maven2RepositoryMetadataResolver) lookup( 
MetadataResolver.class, "maven2" );
+    }
+
+    public void testGetProjectBuildMetadata()
+    {
+        ProjectBuildMetadata metadata =
+            resolver.getProjectBuild( TEST_REPO_ID, "org.apache.archiva", 
"archiva-common", "1.2.1" );
+        MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( 
MavenProjectFacet.FACET_ID );
+        assertEquals( "jar", facet.getPackaging() );
+        assertEquals( 
"http://archiva.apache.org/ref/1.2.1/archiva-base/archiva-common";, 
metadata.getUrl() );
+        // TODO: more testing
+    }
+}

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

Added: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml?rev=883936&view=auto
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml
 (added)
+++ 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml
 Wed Nov 25 00:45:57 2009
@@ -0,0 +1,27 @@
+<!--
+  ~ 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.
+  -->
+
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role>
+      
<implementation>org.apache.archiva.configuration.TestConfiguration</implementation>
+    </component>
+  </components>
+</component-set>
\ No newline at end of file

Propchange: 
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/resources/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

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=883936&r1=883935&r2=883936&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 Nov 25 00:45:57 2009
@@ -43,6 +43,7 @@
     implements MetadataRepository
 {
     /**
+     * TODO: this isn't suitable for production use
      * @plexus.configuration
      */
     private File directory = new File( System.getProperty( "user.home" ), 
".archiva-metadata" );


Reply via email to