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 <joak...@apache.org>
+author-time 1192009640
+author-tz +0000
+committer Joakim Erdfelt
+committer-mail <joak...@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 <nico...@apache.org>
+author-time 1197298694
+author-tz +0000
+committer Nicolas De Loof
+committer-mail <nico...@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
+       }


Reply via email to