1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.resolver.internal.ant.types;
20
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import org.apache.tools.ant.Task;
25 import org.apache.tools.ant.types.DataType;
26 import org.apache.tools.ant.types.Reference;
27
28
29
30 public class RemoteRepositories extends DataType implements RemoteRepositoryContainer {
31
32 private final List<RemoteRepositoryContainer> containers = new ArrayList<>();
33
34 protected RemoteRepositories getRef() {
35 return getCheckedRef(RemoteRepositories.class);
36 }
37
38 @Override
39 public void validate(Task task) {
40 if (isReference()) {
41 getRef().validate(task);
42 } else {
43 for (RemoteRepositoryContainer container : containers) {
44 container.validate(task);
45 }
46 }
47 }
48
49 @Override
50 public void setRefid(Reference ref) {
51 if (!containers.isEmpty()) {
52 throw noChildrenAllowed();
53 }
54 super.setRefid(ref);
55 }
56
57 public void addRemoterepo(RemoteRepository repository) {
58 checkChildrenAllowed();
59 containers.add(repository);
60 }
61
62 public void addRemoterepos(RemoteRepositories repositories) {
63 checkChildrenAllowed();
64 if (repositories == this) {
65 throw circularReference();
66 }
67 containers.add(repositories);
68 }
69
70 @Override
71 public List<RemoteRepository> getRepositories() {
72 if (isReference()) {
73 return getRef().getRepositories();
74 }
75 List<RemoteRepository> repos = new ArrayList<>();
76 for (RemoteRepositoryContainer container : containers) {
77 repos.addAll(container.getRepositories());
78 }
79 return repos;
80 }
81 }