1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.maven.toolchain;
21
22 import java.util.HashMap;
23 import java.util.Iterator;
24 import java.util.Map;
25 import org.apache.maven.toolchain.model.ToolchainModel;
26 import org.codehaus.plexus.logging.Logger;
27
28
29
30
31
32 public abstract class DefaultToolchain
33 implements Toolchain, ToolchainPrivate
34 {
35
36 private String type;
37
38 private Map provides = new HashMap
39
40 public static final String KEY_TYPE = "type";
41
42 private ToolchainModel model;
43
44 private Logger logger;
45
46 protected DefaultToolchain( ToolchainModel model, Logger logger )
47 {
48 this.model = model;
49
50 this.logger = logger;
51 }
52
53 protected DefaultToolchain( ToolchainModel model, String type, Logger logger )
54 {
55 this( model, logger );
56 this.type = type;
57 }
58
59 public final String getType( )
60 {
61 return type != null ? type : model.getType();
62 }
63
64
65 public final ToolchainModel getModel( )
66 {
67 return model;
68 }
69
70 public final void addProvideToken( String type,
71 RequirementMatcher matcher )
72 {
73 provides.put( type, matcher );
74 }
75
76
77 public boolean matchesRequirements(Map requirements) {
78 Iterator it = requirements.keySet().iterator();
79 while ( it.hasNext() )
80 {
81 String key = (String) it.next();
82
83 RequirementMatcher matcher = (RequirementMatcher) provides.get(key);
84
85 if ( matcher == null )
86 {
87 getLog().debug( "Toolchain " + this + " is missing required property: " + key );
88 return false;
89 }
90 if ( !matcher.matches( (String) requirements.get(key) ) )
91 {
92 getLog().debug( "Toolchain " + this + " doesn't match required property: " + key );
93 return false;
94 }
95 }
96 return true;
97 }
98
99 protected Logger getLog() {
100 return logger;
101 }
102 }