1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.release.stubs;
20
21 import javax.inject.Singleton;
22
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.apache.maven.scm.manager.NoSuchScmProviderException;
27 import org.apache.maven.scm.repository.ScmRepository;
28 import org.apache.maven.scm.repository.ScmRepositoryException;
29 import org.eclipse.sisu.Priority;
30
31
32
33
34 @Singleton
35 @Priority(100)
36 public class ScmManagerStub extends org.apache.maven.scm.manager.ScmManagerStub {
37 private Exception e;
38
39 private Map<String, ScmRepository> scmRepositoriesForUrl = new HashMap<>();
40
41 @Override
42 public ScmRepository makeScmRepository(String scmUrl) throws ScmRepositoryException, NoSuchScmProviderException {
43 if (e != null) {
44 if (e instanceof ScmRepositoryException) {
45 throw (ScmRepositoryException) e;
46 } else if (e instanceof NoSuchScmProviderException) {
47 throw (NoSuchScmProviderException) e;
48 } else {
49 throw new RuntimeException(e);
50 }
51 }
52
53 if (scmRepositoriesForUrl.isEmpty()) {
54
55 return getScmRepository();
56 }
57
58 ScmRepository repository = scmRepositoriesForUrl.get(scmUrl);
59 if (repository == null) {
60 throw new ScmRepositoryException("Unexpected URL: " + scmUrl);
61 }
62 return repository;
63 }
64
65 public void addScmRepositoryForUrl(String url, ScmRepository repository) {
66 scmRepositoriesForUrl.put(url, repository);
67 }
68
69 public void setException(Exception e) {
70 this.e = e;
71 }
72 }