You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by st...@apache.org on 2011/02/17 16:30:07 UTC

svn commit: r1071644 - in /maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src: main/java/org/apache/maven/scm/provider/git/gitexe/command/blame/ test/java/org/apache/maven/scm/provider/git/gitexe/command/blame/ te...

Author: struberg
Date: Thu Feb 17 15:30:06 2011
New Revision: 1071644

URL: http://svn.apache.org/viewvc?rev=1071644&view=rev
Log:
[SCM-606] reuse author/committer/date information of previously stored sha-1 commit

This is needed because the git blame porcelain format contains this info
only the first time a sha-1 revision is being used. 

Added:
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.orig
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.out
Modified:
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumer.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumerTest.java

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumer.java?rev=1071644&r1=1071643&r2=1071644&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumer.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumer.java Thu Feb 17 15:30:06 2011
@@ -48,13 +48,23 @@ public class GitBlameConsumer
 
     private List<BlameLine> lines = new ArrayList<BlameLine>();
 
+    /**
+     * Since the porcelain format only contains the commit information
+     * the first time a specific sha-1 commit appears, we need to store
+     * this information somwehere.
+     *
+     * key: the sha-1 of the commit
+     * value: the {@link BlameLine} containing the full committer/author info
+     */
+    private Map<String, BlameLine> commitInfo = new HashMap<String, BlameLine>();
+
+    private boolean expectRevisionLine = true;
+
     private String revision  = null;
     private String author    = null;
     private String committer = null;
     private Date   time      = null;
 
-    private boolean expectRevisionLine = true;
-
     public GitBlameConsumer( ScmLogger logger )
     {
         super( logger );
@@ -75,9 +85,19 @@ public class GitBlameConsumer
             if ( parts.length >= 1)
             {
                 revision = parts[0];
-            }
 
-            expectRevisionLine = false;
+                BlameLine oldLine = commitInfo.get( revision );
+
+                if ( oldLine != null )
+                {
+                    // restore the commit info
+                    author    = oldLine.getAuthor();
+                    committer = oldLine.getCommitter();
+                    time      = oldLine.getDate();
+                }
+
+                expectRevisionLine = false;
+            }
         }
         else
         {
@@ -105,7 +125,11 @@ public class GitBlameConsumer
             {
                 // this is the content line.
                 // we actually don't need the content, but this is the right time to add the blame line
-                getLines().add( new BlameLine( time, revision, author, committer ) );
+                BlameLine blameLine = new BlameLine( time, revision, author, committer );
+                getLines().add( blameLine );
+
+                // keep commitinfo for this sha-1
+                commitInfo.put( revision, blameLine );
 
                 if ( getLogger().isDebugEnabled() )
                 {

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumerTest.java?rev=1071644&r1=1071643&r2=1071644&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumerTest.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/blame/GitBlameConsumerTest.java Thu Feb 17 15:30:06 2011
@@ -9,6 +9,10 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Iterator;
+import java.util.List;
+import java.util.TimeZone;
 
 /**
  * Test the {@link GitBlameConsumer} in various different situations.
@@ -75,6 +79,57 @@ public class GitBlameConsumerTest
 
     }
 
+
+    /**
+     * This unit test compares the output of our new parsing with a
+     * simplified git blame output.
+     */
+    public void testConsumerCompareWithOriginal() throws Exception
+    {
+        GitBlameConsumer consumer = consumeFile( "/src/test/resources/git/blame/git-blame-2.out" );
+        Assert.assertNotNull( consumer );
+
+        List<BlameLine> consumerLines = consumer.getLines();
+        Iterator<BlameLine> consumerLineIt = consumerLines.iterator();
+
+        File compareWithFile = getTestFile( "/src/test/resources/git/blame/git-blame-2.orig" );
+        Assert.assertNotNull( compareWithFile );
+
+        BufferedReader r = new BufferedReader( new FileReader( compareWithFile ) );
+
+        String line;
+        SimpleDateFormat blameDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
+        blameDateFormat.setTimeZone( TimeZone.getTimeZone( "GMT" ) );
+
+        int lineNr = 0;
+
+        while ( ( line = r.readLine() ) != null && line.trim().length() > 0 )
+        {
+            if ( !consumerLineIt.hasNext() )
+            {
+                fail( "GitBlameConsumer lines do not match the original output!" );
+            }
+            BlameLine blameLine = consumerLineIt.next();
+            Assert.assertNotNull( blameLine );
+
+            String[] parts = line.split( "\t" );
+            Assert.assertEquals( 3, parts.length );
+
+            Assert.assertEquals( "error in line " + lineNr, parts[0], blameLine.getRevision() );
+            Assert.assertEquals( "error in line " + lineNr, parts[1], blameLine.getAuthor() );
+            Assert.assertEquals( "error in line " + lineNr, parts[2], blameDateFormat.format( blameLine.getDate() ) );
+
+            lineNr ++;
+        }
+
+        if ( consumerLineIt.hasNext() )
+        {
+            fail( "GitBlameConsumer found more lines than in the original output!" );
+        }
+
+
+    }
+
     /**
      * Consume all lines in the given file with a fresh {@link GitBlameConsumer}.
      *

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.orig
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.orig?rev=1071644&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.orig (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.orig Thu Feb 17 15:30:06 2011
@@ -0,0 +1,87 @@
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+dc29748efbdf29a93a44d389d8d327e3a12f1266	Brett Leslie Porter	2010-03-10 04:21:54
+dc29748efbdf29a93a44d389d8d327e3a12f1266	Brett Leslie Porter	2010-03-10 04:21:54
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+6e36580cc579f7889f592de55d11a2f9668b6bce	Brett Leslie Porter	2010-03-10 14:35:31
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+dc29748efbdf29a93a44d389d8d327e3a12f1266	Brett Leslie Porter	2010-03-10 04:21:54
+dc29748efbdf29a93a44d389d8d327e3a12f1266	Brett Leslie Porter	2010-03-10 04:21:54
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a28ab8cb18a5a8696256b1f3451348efaf613e71	Nicolas De Loof	2007-12-10 14:58:14
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+350a4b4403fb56276f38b6adf37d569b564361e0	Brett Porter	2010-12-31 00:53:23
+350a4b4403fb56276f38b6adf37d569b564361e0	Brett Porter	2010-12-31 00:53:23
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+350a4b4403fb56276f38b6adf37d569b564361e0	Brett Porter	2010-12-31 00:53:23
+350a4b4403fb56276f38b6adf37d569b564361e0	Brett Porter	2010-12-31 00:53:23
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+dc29748efbdf29a93a44d389d8d327e3a12f1266	Brett Leslie Porter	2010-03-10 04:21:54
+dc29748efbdf29a93a44d389d8d327e3a12f1266	Brett Leslie Porter	2010-03-10 04:21:54
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a28ab8cb18a5a8696256b1f3451348efaf613e71	Nicolas De Loof	2007-12-10 14:58:14
+350a4b4403fb56276f38b6adf37d569b564361e0	Brett Porter	2010-12-31 00:53:23
+a28ab8cb18a5a8696256b1f3451348efaf613e71	Nicolas De Loof	2007-12-10 14:58:14
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a28ab8cb18a5a8696256b1f3451348efaf613e71	Nicolas De Loof	2007-12-10 14:58:14
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+6e36580cc579f7889f592de55d11a2f9668b6bce	Brett Leslie Porter	2010-03-10 14:35:31
+6e36580cc579f7889f592de55d11a2f9668b6bce	Brett Leslie Porter	2010-03-10 14:35:31
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+6e36580cc579f7889f592de55d11a2f9668b6bce	Brett Leslie Porter	2010-03-10 14:35:31
+6e36580cc579f7889f592de55d11a2f9668b6bce	Brett Leslie Porter	2010-03-10 14:35:31
+a441a320d2c2d433701360c11cd3d5781f253228	Brett Leslie Porter	2010-03-09 04:24:32
+350a4b4403fb56276f38b6adf37d569b564361e0	Brett Porter	2010-12-31 00:53:23
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20
+a28ab8cb18a5a8696256b1f3451348efaf613e71	Nicolas De Loof	2007-12-10 14:58:14
+9b35c98ded310144be6472888779f679e0106521	Joakim Erdfelt	2007-10-10 09:47:20

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.out
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.out?rev=1071644&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.out (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-2.out Thu Feb 17 15:30:06 2011
@@ -0,0 +1,239 @@
+9b35c98ded310144be6472888779f679e0106521 1 1 21
+author Joakim Erdfelt
+author-mail <jo...@apache.org>
+author-time 1192009640
+author-tz +0000
+committer Joakim Erdfelt
+committer-mail <jo...@apache.org>
+committer-time 1192009640
+committer-tz +0000
+summary [MRM-432] Proxy Connectors are unable to download artifacts with alpha numerical version numbers
+filename archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+	package org.apache.maven.archiva.repository.content;
+9b35c98ded310144be6472888779f679e0106521 2 2
+	
+9b35c98ded310144be6472888779f679e0106521 3 3
+	/*
+9b35c98ded310144be6472888779f679e0106521 4 4
+	 * Licensed to the Apache Software Foundation (ASF) under one
+9b35c98ded310144be6472888779f679e0106521 5 5
+	 * or more contributor license agreements.  See the NOTICE file
+9b35c98ded310144be6472888779f679e0106521 6 6
+	 * distributed with this work for additional information
+9b35c98ded310144be6472888779f679e0106521 7 7
+	 * regarding copyright ownership.  The ASF licenses this file
+9b35c98ded310144be6472888779f679e0106521 8 8
+	 * to you under the Apache License, Version 2.0 (the
+9b35c98ded310144be6472888779f679e0106521 9 9
+	 * "License"); you may not use this file except in compliance
+9b35c98ded310144be6472888779f679e0106521 10 10
+	 * with the License.  You may obtain a copy of the License at
+9b35c98ded310144be6472888779f679e0106521 11 11
+	 *
+9b35c98ded310144be6472888779f679e0106521 12 12
+	 *  http://www.apache.org/licenses/LICENSE-2.0
+9b35c98ded310144be6472888779f679e0106521 13 13
+	 *
+9b35c98ded310144be6472888779f679e0106521 14 14
+	 * Unless required by applicable law or agreed to in writing,
+9b35c98ded310144be6472888779f679e0106521 15 15
+	 * software distributed under the License is distributed on an
+9b35c98ded310144be6472888779f679e0106521 16 16
+	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+9b35c98ded310144be6472888779f679e0106521 17 17
+	 * KIND, either express or implied.  See the License for the
+9b35c98ded310144be6472888779f679e0106521 18 18
+	 * specific language governing permissions and limitations
+9b35c98ded310144be6472888779f679e0106521 19 19
+	 * under the License.
+9b35c98ded310144be6472888779f679e0106521 20 20
+	 */
+9b35c98ded310144be6472888779f679e0106521 21 21
+	
+a441a320d2c2d433701360c11cd3d5781f253228 22 22 2
+author Brett Leslie Porter
+author-mail <br...@apache.org>
+author-time 1268108672
+author-tz +0000
+committer Brett Leslie Porter
+committer-mail <br...@apache.org>
+committer-time 1268108672
+committer-tz +0000
+summary [MNG-1301] remove the problem reports dependency on the repository layer, start to migrate path parsing into metadata API
+previous f6c2f34ac911ed80e96ee129c25258017b6e2fb9 archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+filename archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+	import org.apache.archiva.metadata.model.ArtifactMetadata;
+a441a320d2c2d433701360c11cd3d5781f253228 23 23
+	import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
+dc29748efbdf29a93a44d389d8d327e3a12f1266 24 24 2
+author Brett Leslie Porter
+author-mail <br...@apache.org>
+author-time 1268194914
+author-tz +0000
+committer Brett Leslie Porter
+committer-mail <br...@apache.org>
+committer-time 1268194914
+committer-tz +0000
+summary [MRM-1360] move type population into Maven 2 plugin
+previous 4b52379e41f3dc9d7d60d7d7c5dd1e918847203f archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+filename archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+	import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+dc29748efbdf29a93a44d389d8d327e3a12f1266 25 25
+	import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
+a441a320d2c2d433701360c11cd3d5781f253228 24 26 1
+	import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+6e36580cc579f7889f592de55d11a2f9668b6bce 27 27 1
+author Brett Leslie Porter
+author-mail <br...@apache.org>
+author-time 1268231731
+author-tz +0000
+committer Brett Leslie Porter
+committer-mail <br...@apache.org>
+committer-time 1268231731
+committer-tz +0000
+summary [MRM-1282] Repository Path Translation consolidation
+previous 75b4a89487d3389cdec8b3d4c2c628d5fd61ac2b archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+filename archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+	import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
+9b35c98ded310144be6472888779f679e0106521 22 28 1
+	import org.apache.commons.lang.StringUtils;
+9b35c98ded310144be6472888779f679e0106521 24 29 3
+	import org.apache.maven.archiva.model.ArtifactReference;
+9b35c98ded310144be6472888779f679e0106521 25 30
+	import org.apache.maven.archiva.repository.layout.LayoutException;
+9b35c98ded310144be6472888779f679e0106521 26 31
+	
+dc29748efbdf29a93a44d389d8d327e3a12f1266 32 32 2
+	import java.util.Collections;
+dc29748efbdf29a93a44d389d8d327e3a12f1266 33 33
+	
+9b35c98ded310144be6472888779f679e0106521 27 34 1
+	/**
+a28ab8cb18a5a8696256b1f3451348efaf613e71 28 35 1
+author Nicolas De Loof
+author-mail <ni...@apache.org>
+author-time 1197298694
+author-tz +0000
+committer Nicolas De Loof
+committer-mail <ni...@apache.org>
+committer-time 1197298694
+committer-tz +0000
+summary MRM-594 convert PathParsers to a plexus component, so that it can access the archivaConfiguration and read custom legacyPath 2 artifact references.
+previous bb239e7e20ed397635ee7c7bdd7e17c78abdf4ee archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+filename archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+	 * DefaultPathParser is a parser for maven 2 (default layout) paths to ArtifactReference.
+9b35c98ded310144be6472888779f679e0106521 29 36 1
+	 *
+350a4b4403fb56276f38b6adf37d569b564361e0 37 37 2
+author Brett Porter
+author-mail <br...@apache.org>
+author-time 1293756803
+author-tz +0000
+committer Brett Porter
+committer-mail <br...@apache.org>
+committer-time 1293756803
+committer-tz +0000
+summary [MRM-1448] additional '.' in the classifier & extension should be attributed to the extension instead of the classifier.
+previous 671a82ca41b5b9300e9e698fbdac1ed4ddfe78b4 archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+filename archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultPathParser.java
+	 * TODO: remove in favour of path translator, this is just delegating for the most part, but won't accommodate other
+350a4b4403fb56276f38b6adf37d569b564361e0 38 38
+	 * extensions like NPanday
+a441a320d2c2d433701360c11cd3d5781f253228 34 39 1
+	 *
+9b35c98ded310144be6472888779f679e0106521 31 40 1
+	 * @version $Id$
+9b35c98ded310144be6472888779f679e0106521 34 41 1
+	 */
+350a4b4403fb56276f38b6adf37d569b564361e0 42 42 2
+	public class DefaultPathParser
+350a4b4403fb56276f38b6adf37d569b564361e0 43 43
+	    implements PathParser
+9b35c98ded310144be6472888779f679e0106521 36 44 3
+	{
+9b35c98ded310144be6472888779f679e0106521 37 45
+	    private static final String INVALID_ARTIFACT_PATH = "Invalid path to Artifact: ";
+9b35c98ded310144be6472888779f679e0106521 38 46
+	
+dc29748efbdf29a93a44d389d8d327e3a12f1266 45 47 2
+	    private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator(
+dc29748efbdf29a93a44d389d8d327e3a12f1266 46 48
+	        Collections.<ArtifactMappingProvider>singletonList( new DefaultArtifactMappingProvider() ) );
+a441a320d2c2d433701360c11cd3d5781f253228 42 49 1
+	
+9b35c98ded310144be6472888779f679e0106521 39 50 1
+	    /**
+a28ab8cb18a5a8696256b1f3451348efaf613e71 40 51 1
+	     * {@inheritDoc}
+350a4b4403fb56276f38b6adf37d569b564361e0 52 52 1
+	     *
+a28ab8cb18a5a8696256b1f3451348efaf613e71 41 53 1
+	     * @see org.apache.maven.archiva.repository.content.PathParser#toArtifactReference(java.lang.String)
+9b35c98ded310144be6472888779f679e0106521 45 54 1
+	     */
+a28ab8cb18a5a8696256b1f3451348efaf613e71 43 55 1
+	    public ArtifactReference toArtifactReference( String path )
+9b35c98ded310144be6472888779f679e0106521 47 56 7
+	        throws LayoutException
+9b35c98ded310144be6472888779f679e0106521 48 57
+	    {
+9b35c98ded310144be6472888779f679e0106521 49 58
+	        if ( StringUtils.isBlank( path ) )
+9b35c98ded310144be6472888779f679e0106521 50 59
+	        {
+9b35c98ded310144be6472888779f679e0106521 51 60
+	            throw new LayoutException( "Unable to convert blank path." );
+9b35c98ded310144be6472888779f679e0106521 52 61
+	        }
+9b35c98ded310144be6472888779f679e0106521 53 62
+	
+a441a320d2c2d433701360c11cd3d5781f253228 55 63 2
+	        ArtifactMetadata metadata;
+a441a320d2c2d433701360c11cd3d5781f253228 56 64
+	        try
+9b35c98ded310144be6472888779f679e0106521 69 65 1
+	        {
+a441a320d2c2d433701360c11cd3d5781f253228 58 66 1
+	            metadata = pathTranslator.getArtifactForPath( null, path );
+9b35c98ded310144be6472888779f679e0106521 73 67 1
+	        }
+a441a320d2c2d433701360c11cd3d5781f253228 60 68 1
+	        catch ( IllegalArgumentException e )
+9b35c98ded310144be6472888779f679e0106521 90 69 1
+	        {
+a441a320d2c2d433701360c11cd3d5781f253228 62 70 1
+	            throw new LayoutException( e.getMessage(), e );
+9b35c98ded310144be6472888779f679e0106521 99 71 2
+	        }
+9b35c98ded310144be6472888779f679e0106521 100 72
+	
+a441a320d2c2d433701360c11cd3d5781f253228 65 73 4
+	        ArtifactReference artifact = new ArtifactReference();
+a441a320d2c2d433701360c11cd3d5781f253228 66 74
+	        artifact.setGroupId( metadata.getNamespace() );
+a441a320d2c2d433701360c11cd3d5781f253228 67 75
+	        artifact.setArtifactId( metadata.getProject() );
+a441a320d2c2d433701360c11cd3d5781f253228 68 76
+	        artifact.setVersion( metadata.getVersion() );
+6e36580cc579f7889f592de55d11a2f9668b6bce 74 77 2
+	        MavenArtifactFacet facet = (MavenArtifactFacet) metadata.getFacet( MavenArtifactFacet.FACET_ID );
+6e36580cc579f7889f592de55d11a2f9668b6bce 75 78
+	        if ( facet != null )
+a441a320d2c2d433701360c11cd3d5781f253228 82 79 1
+	        {
+6e36580cc579f7889f592de55d11a2f9668b6bce 77 80 2
+	            artifact.setClassifier( facet.getClassifier() );
+6e36580cc579f7889f592de55d11a2f9668b6bce 78 81
+	            artifact.setType( facet.getType() );
+a441a320d2c2d433701360c11cd3d5781f253228 98 82 1
+	        }
+350a4b4403fb56276f38b6adf37d569b564361e0 83 83 1
+	
+9b35c98ded310144be6472888779f679e0106521 182 84 2
+	        return artifact;
+9b35c98ded310144be6472888779f679e0106521 183 85
+	    }
+a28ab8cb18a5a8696256b1f3451348efaf613e71 201 86 1
+	
+9b35c98ded310144be6472888779f679e0106521 184 87 1
+	}