1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.project;
20  
21  import java.io.File;
22  
23  import org.eclipse.aether.RepositorySystemSession;
24  import org.eclipse.aether.artifact.Artifact;
25  import org.eclipse.aether.metadata.Metadata;
26  import org.eclipse.aether.repository.LocalArtifactRegistration;
27  import org.eclipse.aether.repository.LocalArtifactRequest;
28  import org.eclipse.aether.repository.LocalArtifactResult;
29  import org.eclipse.aether.repository.LocalMetadataRegistration;
30  import org.eclipse.aether.repository.LocalMetadataRequest;
31  import org.eclipse.aether.repository.LocalMetadataResult;
32  import org.eclipse.aether.repository.LocalRepository;
33  import org.eclipse.aether.repository.LocalRepositoryManager;
34  import org.eclipse.aether.repository.RemoteRepository;
35  
36  
37  
38  @Deprecated
39  public class LegacyLocalRepositoryManager implements LocalRepositoryManager {
40  
41      private final LocalRepository repository;
42  
43      public LegacyLocalRepositoryManager(File basedir) {
44          this.repository = new LocalRepository(basedir.getAbsoluteFile(), "legacy");
45      }
46  
47      @Override
48      public LocalRepository getRepository() {
49          return repository;
50      }
51  
52      @Override
53      public String getPathForLocalArtifact(Artifact artifact) {
54          StringBuilder path = new StringBuilder(128);
55  
56          path.append(artifact.getGroupId()).append('/');
57  
58          path.append(artifact.getExtension()).append("s/");
59  
60          path.append(artifact.getArtifactId()).append('-').append(artifact.getVersion());
61  
62          if (!artifact.getClassifier().isEmpty()) {
63              path.append('-').append(artifact.getClassifier());
64          }
65  
66          path.append('.').append(artifact.getExtension());
67  
68          return path.toString();
69      }
70  
71      @Override
72      public String getPathForRemoteArtifact(Artifact artifact, RemoteRepository repository, String context) {
73          return getPathForLocalArtifact(artifact);
74      }
75  
76      @Override
77      public String getPathForLocalMetadata(Metadata metadata) {
78          return getPath(metadata, "local");
79      }
80  
81      @Override
82      public String getPathForRemoteMetadata(Metadata metadata, RemoteRepository repository, String context) {
83          return getPath(metadata, getRepositoryKey(repository, context));
84      }
85  
86      String getRepositoryKey(RemoteRepository repository, String context) {
87          return repository.getId();
88      }
89  
90      private String getPath(Metadata metadata, String repositoryKey) {
91          StringBuilder path = new StringBuilder(128);
92  
93          if (!metadata.getGroupId().isEmpty()) {
94              path.append(metadata.getGroupId().replace('.', '/')).append('/');
95  
96              if (!metadata.getArtifactId().isEmpty()) {
97                  path.append(metadata.getArtifactId()).append('/');
98  
99                  if (!metadata.getVersion().isEmpty()) {
100                     path.append(metadata.getVersion()).append('/');
101                 }
102             }
103         }
104 
105         path.append(insertRepositoryKey(metadata.getType(), repositoryKey));
106 
107         return path.toString();
108     }
109 
110     private String insertRepositoryKey(String filename, String repositoryKey) {
111         String result;
112         int idx = filename.indexOf('.');
113         if (idx < 0) {
114             result = filename + '-' + repositoryKey;
115         } else {
116             result = filename.substring(0, idx) + '-' + repositoryKey + filename.substring(idx);
117         }
118         return result;
119     }
120 
121     @Override
122     public LocalArtifactResult find(RepositorySystemSession session, LocalArtifactRequest request) {
123         String path = getPathForLocalArtifact(request.getArtifact());
124         File file = new File(getRepository().getBasedir(), path);
125 
126         LocalArtifactResult result = new LocalArtifactResult(request);
127         if (file.isFile()) {
128             result.setFile(file);
129             result.setAvailable(true);
130         }
131 
132         return result;
133     }
134 
135     @Override
136     public void add(RepositorySystemSession session, LocalArtifactRegistration request) {
137         
138     }
139 
140     @Override
141     public LocalMetadataResult find(RepositorySystemSession session, LocalMetadataRequest request) {
142         LocalMetadataResult result = new LocalMetadataResult(request);
143 
144         String path;
145 
146         Metadata metadata = request.getMetadata();
147         String context = request.getContext();
148         RemoteRepository remote = request.getRepository();
149 
150         if (remote != null) {
151             path = getPathForRemoteMetadata(metadata, remote, context);
152         } else {
153             path = getPathForLocalMetadata(metadata);
154         }
155 
156         File file = new File(getRepository().getBasedir(), path);
157         if (file.isFile()) {
158             result.setFile(file);
159         }
160 
161         return result;
162     }
163 
164     @Override
165     public void add(RepositorySystemSession session, LocalMetadataRegistration request) {
166         
167     }
168 
169     @Override
170     public String toString() {
171         return String.valueOf(getRepository());
172     }
173 }