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 + }