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 @Named("default")
32 @Singleton
33 public class DefaultRepositoryLayout implements ArtifactRepositoryLayout {
34 private static final char PATH_SEPARATOR = '/';
35
36 private static final char GROUP_SEPARATOR = '.';
37
38 private static final char ARTIFACT_SEPARATOR = '-';
39
40 @Override
41 public String getId() {
42 return "default";
43 }
44
45 @Override
46 public String pathOf(Artifact artifact) {
47 ArtifactHandler artifactHandler = artifact.getArtifactHandler();
48
49 StringBuilder path = new StringBuilder(128);
50
51 path.append(formatAsDirectory(artifact.getGroupId())).append(PATH_SEPARATOR);
52 path.append(artifact.getArtifactId()).append(PATH_SEPARATOR);
53 path.append(artifact.getBaseVersion()).append(PATH_SEPARATOR);
54 path.append(artifact.getArtifactId()).append(ARTIFACT_SEPARATOR).append(artifact.getVersion());
55
56 if (artifact.hasClassifier()) {
57 path.append(ARTIFACT_SEPARATOR).append(artifact.getClassifier());
58 }
59
60 if (artifactHandler.getExtension() != null
61 && !artifactHandler.getExtension().isEmpty()) {
62 path.append(GROUP_SEPARATOR).append(artifactHandler.getExtension());
63 }
64
65 return path.toString();
66 }
67
68 @Override
69 public String pathOfLocalRepositoryMetadata(ArtifactMetadata metadata, ArtifactRepository repository) {
70 return pathOfRepositoryMetadata(metadata, metadata.getLocalFilename(repository));
71 }
72
73 private String pathOfRepositoryMetadata(ArtifactMetadata metadata, String filename) {
74 StringBuilder path = new StringBuilder(128);
75
76 path.append(formatAsDirectory(metadata.getGroupId())).append(PATH_SEPARATOR);
77 if (!metadata.storedInGroupDirectory()) {
78 path.append(metadata.getArtifactId()).append(PATH_SEPARATOR);
79
80 if (metadata.storedInArtifactVersionDirectory()) {
81 path.append(metadata.getBaseVersion()).append(PATH_SEPARATOR);
82 }
83 }
84
85 path.append(filename);
86
87 return path.toString();
88 }
89
90 @Override
91 public String pathOfRemoteRepositoryMetadata(ArtifactMetadata metadata) {
92 return pathOfRepositoryMetadata(metadata, metadata.getRemoteFilename());
93 }
94
95 private String formatAsDirectory(String directory) {
96 return directory.replace(GROUP_SEPARATOR, PATH_SEPARATOR);
97 }
98
99 @Override
100 public String toString() {
101 return getId();
102 }
103 }