1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.artifact.repository.layout;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.artifact.handler.ArtifactHandler;
26 import org.apache.maven.artifact.metadata.ArtifactMetadata;
27 import org.apache.maven.artifact.repository.ArtifactRepository;
28
29
30
31
32 @Named("default")
33 @Singleton
34 public class DefaultRepositoryLayout implements ArtifactRepositoryLayout {
35 private static final char PATH_SEPARATOR = '/';
36
37 private static final char GROUP_SEPARATOR = '.';
38
39 private static final char ARTIFACT_SEPARATOR = '-';
40
41 public String getId() {
42 return "default";
43 }
44
45 public String pathOf(Artifact artifact) {
46 ArtifactHandler artifactHandler = artifact.getArtifactHandler();
47
48 StringBuilder path = new StringBuilder(128);
49
50 path.append(formatAsDirectory(artifact.getGroupId())).append(PATH_SEPARATOR);
51 path.append(artifact.getArtifactId()).append(PATH_SEPARATOR);
52 path.append(artifact.getBaseVersion()).append(PATH_SEPARATOR);
53 path.append(artifact.getArtifactId()).append(ARTIFACT_SEPARATOR).append(artifact.getVersion());
54
55 if (artifact.hasClassifier()) {
56 path.append(ARTIFACT_SEPARATOR).append(artifact.getClassifier());
57 }
58
59 if (artifactHandler.getExtension() != null
60 && artifactHandler.getExtension().length() > 0) {
61 path.append(GROUP_SEPARATOR).append(artifactHandler.getExtension());
62 }
63
64 return path.toString();
65 }
66
67 public String pathOfLocalRepositoryMetadata(ArtifactMetadata metadata, ArtifactRepository repository) {
68 return pathOfRepositoryMetadata(metadata, metadata.getLocalFilename(repository));
69 }
70
71 private String pathOfRepositoryMetadata(ArtifactMetadata metadata, String filename) {
72 StringBuilder path = new StringBuilder(128);
73
74 path.append(formatAsDirectory(metadata.getGroupId())).append(PATH_SEPARATOR);
75 if (!metadata.storedInGroupDirectory()) {
76 path.append(metadata.getArtifactId()).append(PATH_SEPARATOR);
77
78 if (metadata.storedInArtifactVersionDirectory()) {
79 path.append(metadata.getBaseVersion()).append(PATH_SEPARATOR);
80 }
81 }
82
83 path.append(filename);
84
85 return path.toString();
86 }
87
88 public String pathOfRemoteRepositoryMetadata(ArtifactMetadata metadata) {
89 return pathOfRepositoryMetadata(metadata, metadata.getRemoteFilename());
90 }
91
92 private String formatAsDirectory(String directory) {
93 return directory.replace(GROUP_SEPARATOR, PATH_SEPARATOR);
94 }
95
96 @Override
97 public String toString() {
98 return getId();
99 }
100 }