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/10 15:35:32 UTC
svn commit: r921366 - in /archiva/trunk/archiva-modules:
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/
p...
Author: brett
Date: Wed Mar 10 14:35:31 2010
New Revision: 921366
URL: http://svn.apache.org/viewvc?rev=921366&view=rev
Log:
[MRM-1282] Repository Path Translation consolidation
- DefaultPathParser now a shell around RepositoryPathTranslator, for refactoring away
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java
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/test/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMappingTest.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/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.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/ArtifactExtensionMapping.java?rev=921366&r1=921365&r2=921366&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java Wed Mar 10 14:35:31 2010
@@ -24,7 +24,6 @@ import org.apache.archiva.metadata.repos
import java.util.HashMap;
import java.util.Map;
-import java.util.regex.Pattern;
/**
* ArtifactExtensionMapping
@@ -41,8 +40,6 @@ public class ArtifactExtensionMapping
private static final Map<String, String> typeToExtensionMap;
- private static final Pattern mavenPluginPattern = Pattern.compile( "^(maven-.*-plugin)|(.*-maven-plugin)$" );
-
// TODO: won't support extensions - need to refactor away this class
private static final ArtifactMappingProvider mapping = new DefaultArtifactMappingProvider();
@@ -79,17 +76,6 @@ public class ArtifactExtensionMapping
return type;
}
- /**
- * Determine if a given artifact Id conforms to the naming scheme for a maven plugin.
- *
- * @param artifactId the artifactId to test.
- * @return true if this artifactId conforms to the naming scheme for a maven plugin.
- */
- public static boolean isMavenPlugin( String artifactId )
- {
- return mavenPluginPattern.matcher( artifactId ).matches();
- }
-
public static String mapExtensionAndClassifierToType( String classifier, String extension )
{
return mapExtensionAndClassifierToType( classifier, extension, extension );
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=921366&r1=921365&r2=921366&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 Wed Mar 10 14:35:31 2010
@@ -24,8 +24,8 @@ import org.apache.archiva.metadata.repos
import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.common.utils.VersionUtil;
import org.apache.maven.archiva.model.ArtifactReference;
import org.apache.maven.archiva.repository.layout.LayoutException;
@@ -71,80 +71,13 @@ public class DefaultPathParser implement
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 ) )
- {
- 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
- {
- throw new LayoutException( INVALID_ARTIFACT_PATH + "filename format is invalid, "
- + "expected version as stated in path." );
- }
- }
- 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;
- }
- if ( StringUtils.equals( "jar", artifact.getType() ) &&
- ArtifactExtensionMapping.isMavenPlugin( artifact.getArtifactId() ) )
- {
- artifact.setType( ArtifactExtensionMapping.MAVEN_PLUGIN );
- }
-
- // Sanity Checks.
-
- // Do we have a snapshot version?
- if ( VersionUtil.isSnapshot( artifact.getVersion() ) )
+ MavenArtifactFacet facet = (MavenArtifactFacet) metadata.getFacet( MavenArtifactFacet.FACET_ID );
+ if ( facet != null )
{
- // Rules are different for SNAPSHOTS
- if ( !VersionUtil.isGenericSnapshot( baseVersion ) )
- {
- String filenameBaseVersion = VersionUtil.getBaseVersion( artifact.getVersion() );
- throw new LayoutException( "Invalid snapshot artifact location, version directory should be "
- + filenameBaseVersion );
- }
+ artifact.setClassifier( facet.getClassifier() );
+ artifact.setType( facet.getType() );
}
-
+
return artifact;
}
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMappingTest.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/ArtifactExtensionMappingTest.java?rev=921366&r1=921365&r2=921366&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMappingTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMappingTest.java Wed Mar 10 14:35:31 2010
@@ -19,39 +19,57 @@ 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.ArtifactMappingProvider;
+import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
import org.apache.maven.archiva.repository.AbstractRepositoryLayerTestCase;
+import java.util.Collections;
+
/**
- * ArtifactExtensionMappingTest
+ * ArtifactExtensionMappingTest
*
* @version $Id$
*/
public class ArtifactExtensionMappingTest
-extends AbstractRepositoryLayerTestCase
+ extends AbstractRepositoryLayerTestCase
{
+ private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator(
+ Collections.<ArtifactMappingProvider>emptyList() );
+
public void testIsMavenPlugin()
{
- assertMavenPlugin( "maven-test-plugin" );
- assertMavenPlugin( "maven-clean-plugin" );
- assertMavenPlugin( "cobertura-maven-plugin" );
- assertMavenPlugin( "maven-project-info-reports-plugin" );
- assertMavenPlugin( "silly-name-for-a-maven-plugin" );
-
- assertNotMavenPlugin( "maven-plugin-api" );
- assertNotMavenPlugin( "foo-lib" );
- assertNotMavenPlugin( "another-maven-plugin-api" );
- assertNotMavenPlugin( "secret-maven-plugin-2" );
+ assertMavenPlugin( "maven-test-plugin" );
+ assertMavenPlugin( "maven-clean-plugin" );
+ assertMavenPlugin( "cobertura-maven-plugin" );
+ assertMavenPlugin( "maven-project-info-reports-plugin" );
+ assertMavenPlugin( "silly-name-for-a-maven-plugin" );
+
+ assertNotMavenPlugin( "maven-plugin-api" );
+ assertNotMavenPlugin( "foo-lib" );
+ assertNotMavenPlugin( "another-maven-plugin-api" );
+ assertNotMavenPlugin( "secret-maven-plugin-2" );
}
-
+
private void assertMavenPlugin( String artifactId )
{
- assertTrue( "Should be detected as maven plugin: <" + artifactId + ">",
- ArtifactExtensionMapping.isMavenPlugin( artifactId ) );
+ assertEquals( "Should be detected as maven plugin: <" + artifactId + ">", "maven-plugin", getTypeFromArtifactId(
+ artifactId ) );
}
-
+
+ private String getTypeFromArtifactId( String artifactId )
+ {
+ ArtifactMetadata artifact = pathTranslator.getArtifactFromId( null, "groupId", artifactId, "1.0",
+ artifactId + "-1.0.jar" );
+ MavenArtifactFacet facet = (MavenArtifactFacet) artifact.getFacet( MavenArtifactFacet.FACET_ID );
+ return facet.getType();
+ }
+
private void assertNotMavenPlugin( String artifactId )
{
- assertFalse( "Should NOT be detected as maven plugin: <" + artifactId + ">",
- ArtifactExtensionMapping.isMavenPlugin( artifactId ) );
+ assertFalse( "Should NOT be detected as maven plugin: <" + artifactId + ">", "maven-plugin".equals(
+ getTypeFromArtifactId( artifactId ) ) );
}
}
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=921366&r1=921365&r2=921366&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 Wed Mar 10 14:35:31 2010
@@ -36,6 +36,7 @@ public class DefaultPathParserTest
public void testBadPathMissingType()
{
+ // TODO: should we allow this instead?
assertBadPath( "invalid/invalid/1/invalid-1", "missing type" );
}
Modified: archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java?rev=921366&r1=921365&r2=921366&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java (original)
+++ archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java Wed Mar 10 14:35:31 2010
@@ -28,11 +28,11 @@ import java.util.Map;
public class DefaultArtifactMappingProvider
implements ArtifactMappingProvider
{
- private final Map<String,String> classifierAndExtensionToTypeMap;
+ private final Map<String, String> classifierAndExtensionToTypeMap;
public DefaultArtifactMappingProvider()
{
- classifierAndExtensionToTypeMap = new HashMap<String,String>();
+ classifierAndExtensionToTypeMap = new HashMap<String, String>();
// Maven 2.2.1 supplied types (excluding defaults where extension == type and no classifier)
classifierAndExtensionToTypeMap.put( "client:jar", "ejb-client" );
@@ -43,8 +43,14 @@ public class DefaultArtifactMappingProvi
public String mapClassifierAndExtensionToType( String classifier, String ext )
{
- classifier = classifier != null ? classifier : "";
- ext = ext != null ? ext : "";
+ if ( classifier == null )
+ {
+ classifier = "";
+ }
+ if ( ext == null )
+ {
+ ext = "";
+ }
return classifierAndExtensionToTypeMap.get( classifier + ":" + ext );
}
}
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=921366&r1=921365&r2=921366&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 Wed Mar 10 14:35:31 2010
@@ -280,10 +280,35 @@ public class Maven2RepositoryPathTransla
}
}
+ // TODO: this is cheating! We should check the POM metadata instead
+ if ( type == null && "jar".equals( ext ) && isArtifactIdValidMavenPlugin( projectId ) )
+ {
+ type = "maven-plugin";
+ }
+
// use extension as default
- facet.setType( type != null ? type : ext );
+ if ( type == null )
+ {
+ type = ext;
+ }
+
+ // TODO: should we allow this instead?
+ if ( type == null )
+ {
+ throw new IllegalArgumentException(
+ "Not a valid artifact path in a Maven 2 repository, filename '" + id + "' does not have a type" );
+ }
+
+ facet.setType( type );
metadata.addFacet( facet );
return metadata;
}
+
+ private static final Pattern MAVEN_PLUGIN_PATTERN = Pattern.compile( "^(maven-.*-plugin)|(.*-maven-plugin)$" );
+
+ public boolean isArtifactIdValidMavenPlugin( String artifactId )
+ {
+ return MAVEN_PLUGIN_PATTERN.matcher( artifactId ).matches();
+ }
}