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 2010/03/09 05:24:34 UTC

svn commit: r920649 [1/2] - in /archiva/trunk: ./ archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/ archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/reposit...

Author: brett
Date: Tue Mar  9 04:24:32 2010
New Revision: 920649

URL: http://svn.apache.org/viewvc?rev=920649&view=rev
Log:
[MNG-1301] remove the problem reports dependency on the repository layer, start to migrate path parsing into metadata API

Added:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/RepositoryListenerFactoryBean.java   (contents, props changed)
      - copied, changed from r919303, archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListenerFactoryBean.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java   (contents, props changed)
      - copied, changed from r919303, archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListener.java
    archiva/trunk/archiva-modules/metadata/test-repository/   (with props)
    archiva/trunk/archiva-modules/metadata/test-repository/pom.xml
    archiva/trunk/archiva-modules/metadata/test-repository/src/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/invalid-artifact.txt
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.md5
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.sha1
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar   (with props)
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.md5
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.sha1
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.md5
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.sha1
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.md5
    archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.sha1
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumerTest.java
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/java/org/apache/archiva/reports/consumers/MockitoFactory.java
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/resources/
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/resources/META-INF/
    archiva/trunk/archiva-modules/plugins/problem-reports/src/test/resources/META-INF/spring-context.xml
Removed:
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListener.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListenerFactoryBean.java
Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/pom.xml
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedDefaultRepositoryContent.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
    archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java
    archiva/trunk/archiva-modules/metadata/pom.xml
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
    archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
    archiva/trunk/archiva-modules/plugins/problem-reports/pom.xml
    archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java
    archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/consumers/DuplicateArtifactsConsumer.java
    archiva/trunk/pom.xml

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml Tue Mar  9 04:24:32 2010
@@ -18,7 +18,8 @@
   ~ under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.archiva</groupId>
@@ -43,16 +44,20 @@
       <artifactId>archiva-repository-layer</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>metadata-repository-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-digest</artifactId>
     </dependency>
+
+    <!-- test dependencies -->
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-spring</artifactId>
       <scope>test</scope>
     </dependency>
-
-    <!-- test dependencies -->
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java Tue Mar  9 04:24:32 2010
@@ -19,18 +19,18 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.List;
-import java.util.Set;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.model.ArtifactReference;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.audit.AuditEvent;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.List;
+import java.util.Set;
+
 /**
  * Base class for all repository purge tasks.
  * 
@@ -67,6 +67,7 @@ public abstract class AbstractRepository
             {   
                 File artifactFile = repository.toFile( reference );
 
+                // TODO: looks incomplete, might not delete related metadata?
                 for ( RepositoryListener listener : listeners )
                 {
                     listener.deleteArtifact( repository.getId(), reference.getGroupId(), reference.getArtifactId(),

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java Tue Mar  9 04:24:32 2010
@@ -19,12 +19,7 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.common.utils.VersionComparator;
 import org.apache.maven.archiva.common.utils.VersionUtil;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -38,11 +33,16 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.repository.layout.LayoutException;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
 import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * <p>
  * This will look in a single managed repository, and purge any snapshots that are present
@@ -174,7 +174,7 @@ public class CleanupReleasedSnapshotsRep
                     versionRef.setVersion( version );
                     repository.deleteVersion( versionRef );
                     
-                    // TODO: looks incomplete, might not delete related artifacts?
+                    // TODO: looks incomplete, might not delete related metadata?
                     for ( RepositoryListener listener : listeners )
                     {
                         listener.deleteArtifact( repository.getId(), artifact.getGroupId(), artifact.getArtifactId(),

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/DaysOldRepositoryPurge.java Tue Mar  9 04:24:32 2010
@@ -19,6 +19,16 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
+import org.apache.archiva.repository.events.RepositoryListener;
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.maven.archiva.common.utils.VersionComparator;
+import org.apache.maven.archiva.common.utils.VersionUtil;
+import org.apache.maven.archiva.model.ArtifactReference;
+import org.apache.maven.archiva.model.VersionedReference;
+import org.apache.maven.archiva.repository.ContentNotFoundException;
+import org.apache.maven.archiva.repository.ManagedRepositoryContent;
+import org.apache.maven.archiva.repository.layout.LayoutException;
+
 import java.io.File;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -30,16 +40,6 @@ import java.util.List;
 import java.util.Set;
 import java.util.regex.Matcher;
 
-import org.apache.commons.lang.time.DateUtils;
-import org.apache.maven.archiva.common.utils.VersionComparator;
-import org.apache.maven.archiva.common.utils.VersionUtil;
-import org.apache.maven.archiva.model.ArtifactReference;
-import org.apache.maven.archiva.model.VersionedReference;
-import org.apache.maven.archiva.repository.ContentNotFoundException;
-import org.apache.maven.archiva.repository.ManagedRepositoryContent;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
-import org.apache.maven.archiva.repository.layout.LayoutException;
-
 /**
  * Purge from repository all snapshots older than the specified days in the repository configuration.
  * 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java Tue Mar  9 04:24:32 2010
@@ -19,11 +19,7 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationNames;
 import org.apache.maven.archiva.configuration.FileTypes;
@@ -35,13 +31,17 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.registry.RegistryListener;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
 /**
  * Consumer for removing old snapshots in the repository based on the criteria
  * specified by the user.
@@ -94,7 +94,7 @@ public class RepositoryPurgeConsumer
 
     private boolean deleteReleasedSnapshots;
 
-    /** @plexus.requirement role="org.apache.maven.archiva.repository.events.RepositoryListener" */
+    /** @plexus.requirement role="org.apache.archiva.repository.events.RepositoryListener" */
     private List<RepositoryListener> listeners = Collections.emptyList();
     
     public String getId()

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RetentionCountRepositoryPurge.java Tue Mar  9 04:24:32 2010
@@ -19,21 +19,21 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.common.utils.VersionComparator;
 import org.apache.maven.archiva.common.utils.VersionUtil;
 import org.apache.maven.archiva.model.ArtifactReference;
 import org.apache.maven.archiva.model.VersionedReference;
 import org.apache.maven.archiva.repository.ContentNotFoundException;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.repository.layout.LayoutException;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
 /**
  * Purge the repository by retention count. Retain only the specified number of snapshots.
  *

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java Tue Mar  9 04:24:32 2010
@@ -19,17 +19,17 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
 
+import java.io.File;
+import java.io.IOException;
+
 /**
  */
 public abstract class AbstractRepositoryPurgeTest

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/maven/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurgeTest.java Tue Mar  9 04:24:32 2010
@@ -19,18 +19,18 @@ package org.apache.maven.archiva.consume
  * under the License.
  */
 
-import java.io.File;
-import java.util.Collections;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
 import org.custommonkey.xmlunit.XMLAssert;
 import org.easymock.MockControl;
 
+import java.io.File;
+import java.util.Collections;
+
 
 /**
  */

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/pom.xml?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/pom.xml (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/pom.xml Tue Mar  9 04:24:32 2010
@@ -71,6 +71,16 @@
       <groupId>org.apache.archiva</groupId>
       <artifactId>metadata-model</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>maven2-repository</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.apache.archiva</groupId>
+          <artifactId>problem-reports</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
   </dependencies>
   <build>
     <plugins>

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java Tue Mar  9 04:24:32 2010
@@ -19,6 +19,9 @@ package org.apache.maven.archiva.reposit
  * under the License.
  */
 
+import org.apache.archiva.metadata.model.ArtifactMetadata;
+import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
+import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.common.utils.VersionUtil;
 import org.apache.maven.archiva.model.ArtifactReference;
@@ -27,12 +30,16 @@ import org.apache.maven.archiva.reposito
 /**
  * DefaultPathParser is a parser for maven 2 (default layout) paths to ArtifactReference.
  *
+ * TODO: remove in favour of path translator, this is just delegating for the most part
+ *
  * @version $Id$
  */
 public class DefaultPathParser implements PathParser
 {
     private static final String INVALID_ARTIFACT_PATH = "Invalid path to Artifact: ";
 
+    private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator();
+
     /**
      * {@inheritDoc}
      * @see org.apache.maven.archiva.repository.content.PathParser#toArtifactReference(java.lang.String)
@@ -45,133 +52,78 @@ public class DefaultPathParser implement
             throw new LayoutException( "Unable to convert blank path." );
         }
 
-        ArtifactReference artifact = new ArtifactReference();
-
-        String normalizedPath = StringUtils.replace( path, "\\", "/" );
-        String pathParts[] = StringUtils.split( normalizedPath, '/' );
-
-        /* Minimum parts.
-         *
-         *   path = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar"
-         *   path[0] = "commons-lang";        // The Group ID
-         *   path[1] = "commons-lang";        // The Artifact ID
-         *   path[2] = "2.1";                 // The Version
-         *   path[3] = "commons-lang-2.1.jar" // The filename.
-         */
-
-        if ( pathParts.length < 4 )
-        {
-            // Illegal Path Parts Length.
-            throw new LayoutException( "Not enough parts to the path [" + path
-                + "] to construct an ArchivaArtifact from. (Requires at least 4 parts)" );
-        }
-
-        // Maven 2.x path.
-        int partCount = pathParts.length;
-        int filenamePos = partCount - 1;
-        int baseVersionPos = partCount - 2;
-        int artifactIdPos = partCount - 3;
-        int groupIdPos = partCount - 4;
-
-        // Second to last is the baseVersion (the directory version)
-        String baseVersion = pathParts[baseVersionPos];
-
-        // Third to last is the artifact Id.
-        artifact.setArtifactId( pathParts[artifactIdPos] );
-
-        // Remaining pieces are the groupId.
-        for ( int i = 0; i <= groupIdPos; i++ )
+        ArtifactMetadata metadata;
+        try
         {
-            if ( i == 0 )
-            {
-                artifact.setGroupId( pathParts[i] );
-            }
-            else
-            {
-                artifact.setGroupId( artifact.getGroupId() + "." + pathParts[i] );
-            }
+            metadata = pathTranslator.getArtifactForPath( null, path );
         }
-
-        try
+        catch ( IllegalArgumentException e )
         {
-            // Last part is the filename
-            String filename = pathParts[filenamePos];
+            throw new LayoutException( e.getMessage(), e );
+        }
 
-            // Now we need to parse the filename to get the artifact version Id.
-            if ( StringUtils.isBlank( filename ) )
+        ArtifactReference artifact = new ArtifactReference();
+        artifact.setGroupId( metadata.getNamespace() );
+        artifact.setArtifactId( metadata.getProject() );
+        artifact.setVersion( metadata.getVersion() );
+
+        // TODO: use Maven facet instead
+        String filename = metadata.getId();
+        FilenameParser parser = new FilenameParser( filename );
+        artifact.setArtifactId( parser.expect( artifact.getArtifactId() ) );
+        if ( artifact.getArtifactId() == null )
+        {
+            throw new LayoutException( INVALID_ARTIFACT_PATH + "filename format is invalid, "
+                + "should start with artifactId as stated in path." );
+        }
+        String baseVersion = VersionUtil.getBaseVersion( metadata.getVersion() );
+        artifact.setVersion( parser.expect( baseVersion ) );
+        if ( artifact.getVersion() == null )
+        {
+            // We working with a snapshot?
+            if ( VersionUtil.isSnapshot( baseVersion ) )
             {
-                throw new IllegalArgumentException( INVALID_ARTIFACT_PATH + "Unable to split blank filename." );
+                artifact.setVersion( parser.nextVersion() );
+                if ( !VersionUtil.isUniqueSnapshot( artifact.getVersion() ) )
+                {
+                    throw new LayoutException( INVALID_ARTIFACT_PATH + "filename format is invalid,"
+                        + "expected timestamp format in filename." );
+                }
             }
-
-            FilenameParser parser = new FilenameParser( filename );
-
-            // Expect the filename to start with the artifactId.
-            artifact.setArtifactId( parser.expect( artifact.getArtifactId() ) );
-
-            if ( artifact.getArtifactId() == null )
+            else
             {
                 throw new LayoutException( INVALID_ARTIFACT_PATH + "filename format is invalid, "
-                    + "should start with artifactId as stated in path." );
+                    + "expected version as stated in path." );
             }
-
-            // Process the version.
-            artifact.setVersion( parser.expect( baseVersion ) );
-
-            if ( artifact.getVersion() == null )
-            {
-                // We working with a snapshot?
-                if ( VersionUtil.isSnapshot( baseVersion ) )
-                {
-                    artifact.setVersion( parser.nextVersion() );
-                    if ( !VersionUtil.isUniqueSnapshot( artifact.getVersion() ) )
-                    {
-                        throw new LayoutException( INVALID_ARTIFACT_PATH + "filename format is invalid,"
-                            + "expected timestamp format in filename." );
-                    }
-                }
-                else
+        }
+        switch(parser.seperator())
+        {
+            case '-':
+                // Definately a classifier.
+                artifact.setClassifier( parser.remaining() );
+
+                // Set the type.
+                artifact.setType( ArtifactExtensionMapping.mapExtensionAndClassifierToType( artifact.getClassifier(), parser.getExtension() ) );
+                break;
+            case '.':
+                // We have an dual extension possibility.
+                String extension = parser.remaining() + '.' + parser.getExtension();
+                artifact.setType( extension );
+                break;
+            case 0:
+                // End of the filename, only a simple extension left. - Set the type.
+                String type = ArtifactExtensionMapping.mapExtensionToType( parser.getExtension() );
+                if ( type == null )
                 {
-                    throw new LayoutException( INVALID_ARTIFACT_PATH + "filename format is invalid, "
-                        + "expected version as stated in path." );
+                    throw new LayoutException( "Invalid artifact: no type was specified" );
                 }
-            }
-
-            // Do we have a classifier?
-            switch(parser.seperator())
-            {
-                case '-':
-                    // Definately a classifier.
-                    artifact.setClassifier( parser.remaining() );
-
-                    // Set the type.
-                    artifact.setType( ArtifactExtensionMapping.mapExtensionAndClassifierToType( artifact.getClassifier(), parser.getExtension() ) );
-                    break;
-                case '.':
-                    // We have an dual extension possibility.
-                    String extension = parser.remaining() + '.' + parser.getExtension();
-                    artifact.setType( extension );
-                    break;
-                case 0:
-                    // End of the filename, only a simple extension left. - Set the type.
-                    String type = ArtifactExtensionMapping.mapExtensionToType( parser.getExtension() );
-                    if ( type == null )
-                    {
-                        throw new LayoutException( "Invalid artifact: no type was specified" );
-                    }
-                    artifact.setType( type );
-                    break;
-            }
-
-            // Special case for maven plugins
-            if ( StringUtils.equals( "jar", artifact.getType() ) &&
-                 ArtifactExtensionMapping.isMavenPlugin( artifact.getArtifactId() ) )
-            {
-                artifact.setType( ArtifactExtensionMapping.MAVEN_PLUGIN );
-            }
+                artifact.setType( type );
+                break;
         }
-        catch ( LayoutException e )
+        if ( StringUtils.equals( "jar", artifact.getType() ) &&
+             ArtifactExtensionMapping.isMavenPlugin( artifact.getArtifactId() ) )
         {
-            throw e;
+            artifact.setType( ArtifactExtensionMapping.MAVEN_PLUGIN );
         }
 
         // Sanity Checks.
@@ -187,16 +139,6 @@ public class DefaultPathParser implement
                     + filenameBaseVersion );
             }
         }
-        else
-        {
-            // Non SNAPSHOT rules.
-            // Do we pass the simple test?
-            if ( !StringUtils.equals( baseVersion, artifact.getVersion() ) )
-            {
-                throw new LayoutException( "Invalid artifact: version declared in directory path does"
-                    + " not match what was found in the artifact filename." );
-            }
-        }
 
         return artifact;
     }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedDefaultRepositoryContent.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedDefaultRepositoryContent.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedDefaultRepositoryContent.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ManagedDefaultRepositoryContent.java Tue Mar  9 04:24:32 2010
@@ -19,11 +19,6 @@ package org.apache.maven.archiva.reposit
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Set;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.archiva.common.utils.PathUtil;
 import org.apache.maven.archiva.configuration.FileTypes;
@@ -36,6 +31,11 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.layout.LayoutException;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
 /**
  * ManagedDefaultRepositoryContent 
  *
@@ -332,9 +332,9 @@ public class ManagedDefaultRepositoryCon
     public ArtifactReference toArtifactReference( String path )
         throws LayoutException
     {
-        if ( ( path != null ) && path.startsWith( repository.getLocation() ) )
+        if ( ( path != null ) && path.startsWith( repository.getLocation() ) && repository.getLocation().length() > 0 )
         {
-            return super.toArtifactReference( path.substring( repository.getLocation().length() ) );
+            return super.toArtifactReference( path.substring( repository.getLocation().length() + 1 ) );
         }
 
         return super.toArtifactReference( path );

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultPathParserTest.java Tue Mar  9 04:24:32 2010
@@ -195,6 +195,19 @@ public class DefaultPathParserTest
         assertLayout( path, groupId, artifactId, version, classifier, type );
     }
 
+    public void testWindowsPathSeparator()
+        throws LayoutException
+    {
+        String groupId = "commons-lang";
+        String artifactId = "commons-lang";
+        String version = "2.1";
+        String classifier = null;
+        String type = "jar";
+        String path = "commons-lang\\commons-lang/2.1\\commons-lang-2.1.jar";
+
+        assertLayout( path, groupId, artifactId, version, classifier, type );
+    }
+
     /**
      * [MRM-486] Can not deploy artifact test.maven-arch:test-arch due to "No ArtifactID Detected"
      */

Copied: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/RepositoryListenerFactoryBean.java (from r919303, archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListenerFactoryBean.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/RepositoryListenerFactoryBean.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/RepositoryListenerFactoryBean.java&p1=archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListenerFactoryBean.java&r1=919303&r2=920649&rev=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListenerFactoryBean.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/RepositoryListenerFactoryBean.java Tue Mar  9 04:24:32 2010
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.events;
+package org.apache.archiva.web.spring;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,13 +19,14 @@ package org.apache.maven.archiva.reposit
  * under the License.
  */
 
-import java.util.List;
-
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.FactoryBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 
+import java.util.List;
+
 /**
  * @todo though we will eventually remove this altogether, an interim cleanup would be to genericise this
  * and replace the calls in RepositoryContentConsumers with calls to the same thing

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/spring/RepositoryListenerFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java Tue Mar  9 04:24:32 2010
@@ -19,23 +19,13 @@ package org.apache.maven.archiva.web.act
  * under the License.
  */
 
-import java.io.File;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.TimeZone;
-
 import com.opensymphony.xwork2.Preparable;
 import com.opensymphony.xwork2.Validateable;
 import org.apache.archiva.checksum.ChecksumAlgorithm;
 import org.apache.archiva.checksum.ChecksummedFile;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.common.utils.VersionComparator;
 import org.apache.maven.archiva.common.utils.VersionUtil;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -49,7 +39,6 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
 import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.apache.maven.archiva.repository.audit.Auditable;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
 import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
 import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
@@ -59,6 +48,17 @@ import org.apache.maven.archiva.security
 import org.apache.maven.archiva.security.PrincipalNotFoundException;
 import org.apache.maven.archiva.security.UserRepositories;
 
+import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
 /**
  * Delete an artifact. Metadata will be updated if one exists, otherwise it would be created.
  *
@@ -109,7 +109,7 @@ public class DeleteArtifactAction
     private RepositoryContentFactory repositoryFactory;
 
     /**
-     * @plexus.requirement role="org.apache.maven.archiva.repository.events.RepositoryListener"
+     * @plexus.requirement role="org.apache.archiva.repository.events.RepositoryListener"
      */
     private List<RepositoryListener> listeners;
 

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml Tue Mar  9 04:24:32 2010
@@ -55,7 +55,7 @@
     <constructor-arg ref="metadataRepository"/>
     <constructor-arg ref="archivaTaskScheduler#repository"/>
     <constructor-arg>
-      <bean class="org.apache.maven.archiva.repository.events.RepositoryListenerFactoryBean" />
+      <bean class="org.apache.archiva.web.spring.RepositoryListenerFactoryBean" />
     </constructor-arg>       
   </bean> 
 

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java Tue Mar  9 04:24:32 2010
@@ -19,12 +19,9 @@ package org.apache.archiva.web.xmlrpc.se
  * under the License.
  */
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.archiva.repository.scanner.RepositoryContentConsumers;
 import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
 import org.apache.archiva.scheduler.repository.RepositoryTask;
@@ -45,11 +42,14 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.codehaus.plexus.registry.RegistryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
 /**
  * AdministrationServiceImpl
  *

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java Tue Mar  9 04:24:32 2010
@@ -19,14 +19,9 @@ package org.apache.archiva.web.xmlrpc.se
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.repository.events.RepositoryListener;
 import org.apache.archiva.repository.scanner.RepositoryContentConsumers;
 import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
 import org.apache.archiva.scheduler.repository.RepositoryTask;
@@ -47,12 +42,17 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
 import org.apache.maven.archiva.repository.content.ManagedLegacyRepositoryContent;
 import org.apache.maven.archiva.repository.content.PathParser;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.apache.maven.archiva.repository.layout.LayoutException;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
 import org.easymock.classextension.MockClassControl;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * AdministrationServiceImplTest
  * 

Modified: archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java (original)
+++ archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java Tue Mar  9 04:24:32 2010
@@ -19,6 +19,8 @@ package org.apache.archiva.metadata.repo
  * under the License.
  */
 
+import org.apache.archiva.metadata.model.ArtifactMetadata;
+
 import java.io.File;
 
 public interface RepositoryPathTranslator
@@ -32,4 +34,9 @@ public interface RepositoryPathTranslato
     File toFile( File basedir, String namespace );
 
     File toFile( File basedir, String namespace, String projectId, String projectVersion );
+
+    ArtifactMetadata getArtifactForPath( String repoId, String relativePath );
+
+    ArtifactMetadata getArtifactFromId( String repoId, String namespace, String projectId, String projectVersion,
+                                        String id );
 }

Copied: archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java (from r919303, archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListener.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java?p2=archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java&p1=archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListener.java&r1=919303&r2=920649&rev=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/events/RepositoryListener.java (original)
+++ archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java Tue Mar  9 04:24:32 2010
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.events;
+package org.apache.archiva.repository.events;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Propchange: archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/repository/events/RepositoryListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: archiva/trunk/archiva-modules/metadata/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/pom.xml?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/metadata/pom.xml (original)
+++ archiva/trunk/archiva-modules/metadata/pom.xml Tue Mar  9 04:24:32 2010
@@ -29,5 +29,6 @@
   <modules>
     <module>metadata-model</module>
     <module>metadata-repository-api</module>
+    <module>test-repository</module>
   </modules>
-</project>
+</project>
\ No newline at end of file

Propchange: archiva/trunk/archiva-modules/metadata/test-repository/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Mar  9 04:24:32 2010
@@ -0,0 +1,2 @@
+target
+*.iml

Added: archiva/trunk/archiva-modules/metadata/test-repository/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/pom.xml?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/pom.xml (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/pom.xml Tue Mar  9 04:24:32 2010
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <artifactId>metadata</artifactId>
+    <groupId>org.apache.archiva</groupId>
+    <version>1.4-SNAPSHOT</version>
+  </parent>
+  <artifactId>test-repository</artifactId>
+  <name>Archiva Repository for Testing</name>
+</project>

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/invalid-artifact.txt
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/invalid-artifact.txt?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/invalid-artifact.txt (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/invalid-artifact.txt Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+invalid path

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml Tue Mar  9 04:24:32 2010
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.example.test</groupId>
+  <artifactId>test-artifact</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <timestamp>20100308.230825</timestamp>
+      <buildNumber>1</buildNumber>
+    </snapshot>
+    <lastUpdated>20100308230825</lastUpdated>
+  </versioning>
+</metadata>

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.md5
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.md5?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.md5 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.md5 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+7210867ac16cd955db89cfca699e7c96
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.sha1
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.sha1?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.sha1 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/maven-metadata.xml.sha1 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+271faeb2039d026ee6a3c937375b5ff7d4b1d605
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar?rev=920649&view=auto
==============================================================================
Binary file - no diff available.

Propchange: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.md5
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.md5?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.md5 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.md5 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+cc2236dd70af3667080a786c7dcb4a9b
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.sha1
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.sha1?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.sha1 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.jar.sha1 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+edf5938e646956f445c6ecb719d44579cdeed974
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom Tue Mar  9 04:24:32 2010
@@ -0,0 +1,24 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.example.test</groupId>
+  <artifactId>test-artifact</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>test-artifact</name>
+  <url>http://maven.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <distributionManagement>
+    <repository>
+      <id>test-repo</id>
+      <url>file:${basedir}/repository</url>
+    </repository>
+  </distributionManagement>
+</project>

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.md5
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.md5?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.md5 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.md5 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+ce7eeb9586dc4992dc961d9f3a28006b
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.sha1
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.sha1?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.sha1 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/1.0-SNAPSHOT/test-artifact-1.0-20100308.230825-1.pom.sha1 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+be040c8462fd31d4e03749e3586afbb21f43594e
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml Tue Mar  9 04:24:32 2010
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.example.test</groupId>
+  <artifactId>test-artifact</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <versioning>
+    <versions>
+      <version>1.0-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20100308230825</lastUpdated>
+  </versioning>
+</metadata>

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.md5
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.md5?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.md5 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.md5 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+93afaac7340faadc7efd097952d79fa4
\ No newline at end of file

Added: archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.sha1
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.sha1?rev=920649&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.sha1 (added)
+++ archiva/trunk/archiva-modules/metadata/test-repository/src/main/resources/com/example/test/test-artifact/maven-metadata.xml.sha1 Tue Mar  9 04:24:32 2010
@@ -0,0 +1 @@
+d59d588343d61fd7d838984a0daa4aaa2546bf9d
\ No newline at end of file

Modified: archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java (original)
+++ archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java Tue Mar  9 04:24:32 2010
@@ -60,8 +60,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * @plexus.component role="org.apache.archiva.metadata.repository.storage.StorageMetadataResolver" role-hint="maven2"
@@ -114,6 +112,7 @@ public class Maven2RepositoryMetadataRes
                                                      String projectVersion )
         throws MetadataResolutionException
     {
+        // Remove problems associated with this version, since we'll be re-adding any that still exist
         // TODO: an event mechanism would remove coupling to the problem reporting plugin
         // TODO: this removes all problems - do we need something that just removes the problems created by this resolver?
         String name = RepositoryProblemFacet.createName( namespace, projectId, projectVersion, null );
@@ -490,54 +489,42 @@ public class Maven2RepositoryMetadataRes
         {
             for ( File file : files )
             {
-                ArtifactMetadata metadata = new ArtifactMetadata();
-                metadata.setId( file.getName() );
-                metadata.setProject( projectId );
-                metadata.setNamespace( namespace );
-                metadata.setRepositoryId( repoId );
-                metadata.setWhenGathered( new Date() );
-                metadata.setFileLastModified( file.lastModified() );
-                ChecksummedFile checksummedFile = new ChecksummedFile( file );
-                try
-                {
-                    metadata.setMd5( checksummedFile.calculateChecksum( ChecksumAlgorithm.MD5 ) );
-                }
-                catch ( IOException e )
-                {
-                    log.error( "Unable to checksum file " + file + ": " + e.getMessage() );
-                }
-                try
-                {
-                    metadata.setSha1( checksummedFile.calculateChecksum( ChecksumAlgorithm.SHA1 ) );
-                }
-                catch ( IOException e )
-                {
-                    log.error( "Unable to checksum file " + file + ": " + e.getMessage() );
-                }
-                metadata.setSize( file.length() );
-
-                // TODO: very crude, migrate the functionality from the repository-layer here
-                if ( VersionUtil.isGenericSnapshot( projectVersion ) )
-                {
-                    String mainVersion = projectVersion.substring( 0, projectVersion.length() -
-                        8 ); // 8 is length of "SNAPSHOT"
-                    Matcher m = Pattern.compile(
-                        projectId + "-" + mainVersion + "([0-9]{8}.[0-9]{6}-[0-9]+).*" ).matcher( file.getName() );
-                    m.matches();
-                    String version = mainVersion + m.group( 1 );
-
-                    metadata.setVersion( version );
-                }
-                else
-                {
-                    metadata.setVersion( projectVersion );
-                }
+                ArtifactMetadata metadata = getArtifactFromFile( repoId, namespace, projectId, projectVersion, file );
                 artifacts.add( metadata );
             }
         }
         return artifacts;
     }
 
+    private ArtifactMetadata getArtifactFromFile( String repoId, String namespace, String projectId,
+                                                  String projectVersion, File file )
+    {
+        ArtifactMetadata metadata = pathTranslator.getArtifactFromId( repoId, namespace, projectId, projectVersion, file.getName() );
+
+        metadata.setWhenGathered( new Date() );
+        metadata.setFileLastModified( file.lastModified() );
+        ChecksummedFile checksummedFile = new ChecksummedFile( file );
+        try
+        {
+            metadata.setMd5( checksummedFile.calculateChecksum( ChecksumAlgorithm.MD5 ) );
+        }
+        catch ( IOException e )
+        {
+            log.error( "Unable to checksum file " + file + ": " + e.getMessage() );
+        }
+        try
+        {
+            metadata.setSha1( checksummedFile.calculateChecksum( ChecksumAlgorithm.SHA1 ) );
+        }
+        catch ( IOException e )
+        {
+            log.error( "Unable to checksum file " + file + ": " + e.getMessage() );
+        }
+        metadata.setSize( file.length() );
+
+        return metadata;
+    }
+
     private boolean isProject( File dir, Filter<String> filter )
     {
         // scan directories for a valid project version subdirectory, meaning this must be a project directory

Modified: archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java (original)
+++ archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java Tue Mar  9 04:24:32 2010
@@ -1,8 +1,14 @@
 package org.apache.archiva.metadata.repository.storage.maven2;
 
-import java.io.File;
-
+import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.archiva.common.utils.VersionUtil;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -113,4 +119,141 @@ public class Maven2RepositoryPathTransla
     {
         return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR );
     }
+
+    private static String parseTimestampedVersionFromId( String projectId, String projectVersion, String id )
+    {
+        String mainVersion = projectVersion.substring( 0, projectVersion.length() - 8 ); // 8 is length of "SNAPSHOT"
+        if ( mainVersion.length() == 0 )
+        {
+            throw new IllegalArgumentException(
+                "Timestamped snapshots must contain the main version, filename was '" + id + "'" );
+        }
+        Matcher m = Pattern.compile( projectId + "-" + mainVersion + "([0-9]{8}.[0-9]{6}-[0-9]+).*" ).matcher( id );
+        m.matches();
+        return mainVersion + m.group( 1 );
+    }
+
+    public ArtifactMetadata getArtifactFromId( String repoId, String namespace, String projectId, String projectVersion,
+                                               String id )
+    {
+        ArtifactMetadata metadata = new ArtifactMetadata();
+        metadata.setId( id );
+        metadata.setProject( projectId );
+        metadata.setNamespace( namespace );
+        metadata.setRepositoryId( repoId );
+
+        if ( VersionUtil.isGenericSnapshot( projectVersion ) )
+        {
+            String version = parseTimestampedVersionFromId( projectId, projectVersion, id );
+
+            metadata.setVersion( version );
+        }
+        else
+        {
+            metadata.setVersion( projectVersion );
+        }
+        return metadata;
+    }
+
+    public ArtifactMetadata getArtifactForPath( String repoId, String relativePath )
+    {
+        String[] parts = relativePath.replace( '\\', '/' ).split( "/" );
+
+        int len = parts.length;
+        if ( len < 4 )
+        {
+            throw new IllegalArgumentException(
+                "Not a valid artifact path in a Maven 2 repository, not enough directories: " + relativePath );
+        }
+
+        String id = parts[--len];
+        String baseVersion = parts[--len];
+        String artifactId = parts[--len];
+        String groupId = StringUtils.join( Arrays.copyOfRange( parts, 0, len ), '.' );
+
+        if ( !id.startsWith( artifactId + "-" ) )
+        {
+            throw new IllegalArgumentException( "Not a valid artifact path in a Maven 2 repository, filename '" + id +
+                "' doesn't start with artifact ID '" + artifactId + "'" );
+        }
+
+        int index = artifactId.length() + 1;
+        String version;
+        if ( id.substring( index ).startsWith( baseVersion ) && !VersionUtil.isUniqueSnapshot( baseVersion ) )
+        {
+            // non-snapshot versions, or non-timestamped snapshot versions
+            version = baseVersion;
+        }
+        else if ( VersionUtil.isGenericSnapshot( baseVersion ) )
+        {
+            // timestamped snapshots
+            try
+            {
+                version = parseTimestampedVersionFromId( artifactId, baseVersion, id );
+            }
+            catch ( IllegalStateException e )
+            {
+                throw new IllegalArgumentException(
+                    "Not a valid artifact path in a Maven 2 repository, filename '" + id +
+                        "' doesn't contain a timestamped version matching snapshot '" + baseVersion + "'" );
+            }
+        }
+        else
+        {
+            // invalid
+            throw new IllegalArgumentException(
+                "Not a valid artifact path in a Maven 2 repository, filename '" + id + "' doesn't contain version '" +
+                    baseVersion + "'" );
+        }
+
+        String classifier;
+        String ext;
+        index += version.length();
+        if ( index == id.length() )
+        {
+            // no classifier or extension
+            classifier = null;
+            ext = null;
+        }
+        else
+        {
+            char c = id.charAt( index );
+            if ( c == '-' )
+            {
+                // classifier up until last '.'
+                int extIndex = id.lastIndexOf( '.' );
+                if ( extIndex > index )
+                {
+                    classifier = id.substring( index + 1, extIndex );
+                    ext = id.substring( extIndex + 1 );
+                }
+                else
+                {
+                    classifier = id.substring( index + 1 );
+                    ext = null;
+                }
+            }
+            else if ( c == '.' )
+            {
+                // rest is the extension
+                classifier = null;
+                ext = id.substring( index + 1 );
+            }
+            else
+            {
+                throw new IllegalArgumentException(
+                    "Not a valid artifact path in a Maven 2 repository, filename '" + id +
+                        "' expected classifier or extension but got '" + id.substring( index ) + "'" );
+            }
+        }
+
+        ArtifactMetadata metadata = new ArtifactMetadata();
+        metadata.setId( id );
+        metadata.setNamespace( groupId );
+        metadata.setProject( artifactId );
+        metadata.setRepositoryId( repoId );
+        metadata.setVersion( version );
+        // TODO: set classifier and extension on Maven facet
+        return metadata;
+    }
 }

Modified: archiva/trunk/archiva-modules/plugins/problem-reports/pom.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/problem-reports/pom.xml?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/problem-reports/pom.xml (original)
+++ archiva/trunk/archiva-modules/plugins/problem-reports/pom.xml Tue Mar  9 04:24:32 2010
@@ -32,14 +32,59 @@
       <groupId>org.apache.archiva</groupId>
       <artifactId>metadata-repository-api</artifactId>
     </dependency>
-    <!-- TODO: we want to move the event handling, or perhaps centralise under deleteArtifact() in the metadata repository itself -->
     <dependency>
       <groupId>org.apache.archiva</groupId>
-      <artifactId>archiva-repository-layer</artifactId>
+      <artifactId>archiva-checksum</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.archiva</groupId>
-      <artifactId>archiva-checksum</artifactId>
+      <artifactId>archiva-model</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-consumer-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-spring</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <version>1.8.3</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>test-repository</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>test-repository</id>
+            <phase>generate-test-resources</phase>
+            <goals>
+              <goal>unpack-dependencies</goal>
+            </goals>
+            <configuration>
+              <includeArtifactIds>test-repository</includeArtifactIds>
+              <outputDirectory>target/test-repository</outputDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>

Modified: archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java?rev=920649&r1=920648&r2=920649&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java (original)
+++ archiva/trunk/archiva-modules/plugins/problem-reports/src/main/java/org/apache/archiva/reports/RepositoryProblemEventListener.java Tue Mar  9 04:24:32 2010
@@ -20,12 +20,12 @@ package org.apache.archiva.reports;
  */
 
 import org.apache.archiva.metadata.repository.MetadataRepository;
-import org.apache.maven.archiva.repository.events.RepositoryListener;
+import org.apache.archiva.repository.events.RepositoryListener;
 
 /**
  * Process repository management events and respond appropriately.
  *
- * @plexus.component role="org.apache.maven.archiva.repository.events.RepositoryListener" role-hint="problem-reports"
+ * @plexus.component role="org.apache.archiva.repository.events.RepositoryListener" role-hint="problem-reports"
  */
 public class RepositoryProblemEventListener
     implements RepositoryListener