1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.googlecode.t7mp.configuration;
17
18 import java.io.File;
19 import java.util.LinkedList;
20 import java.util.List;
21
22 import org.apache.commons.lang.Validate;
23
24
25
26
27
28
29 public class ChainedArtifactResolver implements PluginArtifactResolver {
30
31 protected List<PluginArtifactResolver> resolverChain = new LinkedList<PluginArtifactResolver>();
32
33 public ChainedArtifactResolver() {
34 this.resolverChain.add(new SystemPathArtifactResolver());
35 }
36
37 @Override
38 public File resolveArtifact(final String coordinates) throws ResolutionException {
39 File result = null;
40 for (PluginArtifactResolver resolver : resolverChain) {
41 try {
42 result = resolver.resolveArtifact(coordinates);
43 if (result != null) {
44 break;
45 }
46
47 } catch (ResolutionException e) {
48 }
49
50 }
51 if (result == null) {
52 throw new ResolutionException("Could not resolve artifact with coordinates " + coordinates);
53 }
54 return result;
55 }
56
57 public void addPluginArtifactResolver(PluginArtifactResolver pluginArtifactResolver) {
58 Validate.notNull(pluginArtifactResolver, "PluginArtifactResolvers should not be null");
59 this.resolverChain.add(pluginArtifactResolver);
60 }
61
62 }