From: Brett Porter Date: Wed, 10 Mar 2010 14:47:30 +0000 (+0000) Subject: [MRM-1282] Repository Path Translation consolidation X-Git-Tag: archiva-1.4-M1~987 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ca5684b38f6ad96508bd2a4fea7ef8a2bd4e2b5f;p=archiva.git [MRM-1282] Repository Path Translation consolidation git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@921374 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractDefaultRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractDefaultRepositoryContent.java index 342807035..dbee3bf0f 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractDefaultRepositoryContent.java +++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractDefaultRepositoryContent.java @@ -19,6 +19,8 @@ package org.apache.maven.archiva.repository.content; * under the License. */ +import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator; +import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator; import org.apache.commons.lang.StringUtils; import org.apache.maven.archiva.common.utils.VersionUtil; import org.apache.maven.archiva.model.ArchivaArtifact; @@ -46,6 +48,8 @@ public abstract class AbstractDefaultRepositoryContent protected static final char ARTIFACT_SEPARATOR = '-'; + private RepositoryPathTranslator pathTranslator = new Maven2RepositoryPathTranslator(); + private PathParser defaultPathParser = new DefaultPathParser(); public ArtifactReference toArtifactReference( String path ) @@ -113,27 +117,33 @@ public abstract class AbstractDefaultRepositoryContent private String toPath( String groupId, String artifactId, String baseVersion, String version, String classifier, String type ) { - StringBuffer path = new StringBuffer(); - - path.append( formatAsDirectory( groupId ) ).append( PATH_SEPARATOR ); - path.append( artifactId ).append( PATH_SEPARATOR ); - if ( baseVersion != null ) { - path.append( baseVersion ).append( PATH_SEPARATOR ); - if ( ( version != null ) && ( type != null ) ) - { - path.append( artifactId ).append( ARTIFACT_SEPARATOR ).append( version ); + return pathTranslator.toPath( groupId, artifactId, baseVersion, constructId( artifactId, version, + classifier, type ) ); + } + else + { + return pathTranslator.toPath( groupId, artifactId ); + } + } - if ( StringUtils.isNotBlank( classifier ) ) - { - path.append( ARTIFACT_SEPARATOR ).append( classifier ); - } + // TODO: move into the Maven Artifact facet when refactoring away the caller - the caller will need to have access + // to the facet or filename (for the original ID) + private String constructId( String artifactId, String version, String classifier, String type ) + { + StringBuilder id = new StringBuilder(); + if ( ( version != null ) && ( type != null ) ) + { + id.append( artifactId ).append( ARTIFACT_SEPARATOR ).append( version ); - path.append( GROUP_SEPARATOR ).append( ArtifactExtensionMapping.getExtension( type ) ); + if ( StringUtils.isNotBlank( classifier ) ) + { + id.append( ARTIFACT_SEPARATOR ).append( classifier ); } - } - return path.toString(); + id.append( "." ).append( ArtifactExtensionMapping.getExtension( type ) ); + } + return id.toString(); } } diff --git a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java index ee9358219..edd8539bd 100644 --- a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java +++ b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java @@ -25,10 +25,12 @@ import java.io.File; public interface RepositoryPathTranslator { - File toFile( File basedir, String namespace, String projectId, String projectVersion, String filename ); - String toPath( String namespace, String projectId, String projectVersion, String filename ); + String toPath( String namespace, String projectId ); + + File toFile( File basedir, String namespace, String projectId, String projectVersion, String filename ); + File toFile( File basedir, String namespace, String projectId ); File toFile( File basedir, String namespace );