1 package org.apache.maven.toolchain;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.HashMap;
23 import java.util.Map;
24
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<String, RequirementMatcher> provides = new HashMap<String, RequirementMatcher>();
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, RequirementMatcher matcher )
71 {
72 provides.put( type, matcher );
73 }
74
75
76 public boolean matchesRequirements( Map<String, String> requirements )
77 {
78 for ( Map.Entry<String, String> requirement : requirements.entrySet() )
79 {
80 String key = requirement.getKey();
81
82 RequirementMatcher matcher = provides.get( key );
83
84 if ( matcher == null )
85 {
86 getLog().debug( "Toolchain " + this + " is missing required property: " + key );
87 return false;
88 }
89 if ( !matcher.matches( requirement.getValue() ) )
90 {
91 getLog().debug( "Toolchain " + this + " doesn't match required property: " + key );
92 return false;
93 }
94 }
95 return true;
96 }
97
98 protected Logger getLog()
99 {
100 return logger;
101 }
102 }