1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle.providers;
20
21 import javax.inject.Provider;
22
23 import java.util.Arrays;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.LinkedHashMap;
27
28 import org.apache.maven.lifecycle.Lifecycle;
29 import org.apache.maven.lifecycle.mapping.LifecyclePhase;
30
31
32
33
34 public abstract class AbstractLifecycleProvider implements Provider<Lifecycle> {
35 private final Lifecycle lifecycle;
36
37 protected AbstractLifecycleProvider(String id, String[] phases, String[] pluginBindings) {
38 HashMap<String, LifecyclePhase> defaultBindings = null;
39 if (pluginBindings != null) {
40 final int len = pluginBindings.length;
41
42 if (len < 2 || len % 2 != 0) {
43 throw new IllegalArgumentException("Plugin bindings must have more than 0, even count of elements");
44 }
45
46 defaultBindings = new LinkedHashMap<>(len / 2);
47
48 for (int i = 0; i < len; i += 2) {
49 defaultBindings.put(pluginBindings[i], new LifecyclePhase(pluginBindings[i + 1]));
50 }
51 }
52
53 this.lifecycle = new Lifecycle(
54 id,
55 Collections.unmodifiableList(Arrays.asList(phases)),
56 defaultBindings == null ? null : Collections.unmodifiableMap(defaultBindings));
57 }
58
59 @Override
60 public Lifecycle get() {
61 return lifecycle;
62 }
63 }