]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1282] Repository Path Translation consolidation
authorBrett Porter <brett@apache.org>
Wed, 10 Mar 2010 14:47:30 +0000 (14:47 +0000)
committerBrett Porter <brett@apache.org>
Wed, 10 Mar 2010 14:47:30 +0000 (14:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@921374 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractDefaultRepositoryContent.java
archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/RepositoryPathTranslator.java

index 3428070355c5a4e895d8e11e845b942fd445c1cd..dbee3bf0fbfa790fc057b973a7df8281464267d1 100644 (file)
@@ -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();
     }
 }
index ee9358219ddc05ea1cc88dc3f34a707e94df03b8..edd8539bd832f8dc025aba634ae393e48377dafa 100644 (file)
@@ -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 );