• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

devonfw / IDEasy / 25333796320

04 May 2026 05:40PM UTC coverage: 70.645% (-0.002%) from 70.647%
25333796320

push

github

web-flow
#1238: User-defined MAVEN_ARGS appends and no longer overwrites IDEasy's defaults (#1825)

4386 of 6860 branches covered (63.94%)

Branch coverage included in aggregate %.

11312 of 15361 relevant lines covered (73.64%)

3.11 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.24
cli/src/main/java/com/devonfw/tools/ide/variable/AbstractVariableDefinition.java
1
package com.devonfw.tools.ide.variable;
2

3
import java.util.Objects;
4
import java.util.function.Function;
5

6
import com.devonfw.tools.ide.context.IdeContext;
7
import com.devonfw.tools.ide.environment.EnvironmentVariables;
8

9
/**
10
 * Abstract base implementation of {@link VariableDefinition}.
11
 *
12
 * @param <V> the {@link #getValueType() value type}.
13
 */
14
public abstract class AbstractVariableDefinition<V> implements VariableDefinition<V> {
15

16
  @SuppressWarnings("rawtypes")
17
  private static final Function NO_DEFAULT_VALUE = context -> null;
5✔
18

19
  private final String name;
20

21
  private final String legacyName;
22

23
  private final Function<IdeContext, V> defaultValueFactory;
24

25
  private final boolean forceDefaultValue;
26

27
  private final boolean export;
28

29
  private final boolean appendDefaultValue;
30

31
  /**
32
   * The constructor.
33
   *
34
   * @param name the {@link #getName() variable name}.
35
   */
36
  public AbstractVariableDefinition(String name) {
37

38
    this(name, null, NO_DEFAULT_VALUE, false);
6✔
39
  }
1✔
40

41
  /**
42
   * The constructor.
43
   *
44
   * @param name the {@link #getName() variable name}.
45
   * @param legacyName the {@link #getLegacyName() legacy name}.
46
   */
47
  public AbstractVariableDefinition(String name, String legacyName) {
48

49
    this(name, legacyName, NO_DEFAULT_VALUE, false);
6✔
50
  }
1✔
51

52
  /**
53
   * The constructor.
54
   *
55
   * @param name the {@link #getName() variable name}.
56
   * @param legacyName the {@link #getLegacyName() legacy name}.
57
   * @param defaultValueFactory the factory {@link Function} for the {@link #getDefaultValue(IdeContext) default value}.
58
   * @param forceDefaultValue the {@link #isForceDefaultValue() forceDefaultValue} flag.
59
   */
60
  public AbstractVariableDefinition(String name, String legacyName, Function<IdeContext, V> defaultValueFactory,
61
      boolean forceDefaultValue) {
62

63
    this(name, legacyName, defaultValueFactory, forceDefaultValue, false);
7✔
64
  }
1✔
65

66
  /**
67
   * The constructor.
68
   *
69
   * @param name the {@link #getName() variable name}.
70
   * @param legacyName the {@link #getLegacyName() legacy name}.
71
   * @param defaultValueFactory the factory {@link Function} for the {@link #getDefaultValue(IdeContext) default value}.
72
   */
73
  public AbstractVariableDefinition(String name, String legacyName, Function<IdeContext, V> defaultValueFactory) {
74

75
    this(name, legacyName, defaultValueFactory, false);
6✔
76
  }
1✔
77

78
  /**
79
   * The constructor.
80
   *
81
   * @param name the {@link #getName() variable name}.
82
   * @param legacyName the {@link #getLegacyName() legacy name}.
83
   * @param defaultValueFactory the factory {@link Function} for the {@link #getDefaultValue(IdeContext) default value}.
84
   * @param forceDefaultValue the {@link #isForceDefaultValue() forceDefaultValue} flag.
85
   * @param export the {@link #isExport() export} flag.
86
   */
87
  public AbstractVariableDefinition(String name, String legacyName, Function<IdeContext, V> defaultValueFactory,
88
      boolean forceDefaultValue, boolean export) {
89

90
    this(name, legacyName, defaultValueFactory, forceDefaultValue, export, false);
8✔
91
  }
1✔
92

93
  /**
94
   * The constructor.
95
   *
96
   * @param name the {@link #getName() variable name}.
97
   * @param legacyName the {@link #getLegacyName() legacy name}.
98
   * @param defaultValueFactory the factory {@link Function} for the {@link #getDefaultValue(IdeContext) default value}.
99
   * @param forceDefaultValue the {@link #isForceDefaultValue() forceDefaultValue} flag.
100
   * @param export the {@link #isExport() export} flag.
101
   * @param appendDefaultValue the {@link #isDefaultValueAppended() appendDefaultValue} flag.
102
   */
103
  public AbstractVariableDefinition(String name, String legacyName, Function<IdeContext, V> defaultValueFactory,
104
      boolean forceDefaultValue, boolean export, boolean appendDefaultValue) {
105

106
    super();
2✔
107
    this.name = name;
3✔
108
    this.legacyName = legacyName;
3✔
109
    this.defaultValueFactory = defaultValueFactory;
3✔
110
    this.forceDefaultValue = forceDefaultValue;
3✔
111
    this.export = export;
3✔
112
    this.appendDefaultValue = appendDefaultValue;
3✔
113
  }
1✔
114

115
  @Override
116
  public boolean isForceDefaultValue() {
117

118
    return this.forceDefaultValue;
3✔
119
  }
120

121
  @Override
122
  public boolean isDefaultValueAppended() {
123

124
    return this.appendDefaultValue;
3✔
125
  }
126

127
  @Override
128
  public String getName() {
129

130
    return this.name;
3✔
131
  }
132

133
  @Override
134
  public String getLegacyName() {
135

136
    return this.legacyName;
3✔
137
  }
138

139
  @Override
140
  public V getDefaultValue(IdeContext context) {
141

142
    return this.defaultValueFactory.apply(context);
5✔
143
  }
144

145
  @Override
146
  public V get(IdeContext context) {
147

148
    Objects.requireNonNull(context);
3✔
149
    String valueAsString = null;
2✔
150
    if (!this.forceDefaultValue) {
3✔
151
      EnvironmentVariables variables = context.getVariables();
3✔
152
      valueAsString = variables.get(this.name, true);
6✔
153
      if (valueAsString == null) {
2✔
154
        if (this.legacyName != null) {
3✔
155
          valueAsString = variables.get(this.legacyName, true);
6✔
156
        }
157
      }
158
    }
159
    V value;
160
    if (valueAsString == null) {
2✔
161
      value = getDefaultValue(context);
5✔
162
    } else {
163
      value = fromString(valueAsString, context);
5✔
164
    }
165
    return value;
2✔
166
  }
167

168
  @Override
169
  public boolean isExport() {
170

171
    return this.export;
3✔
172
  }
173

174
  @Override
175
  public String toString() {
176

177
    Class<V> valueType = getValueType();
×
178
    if (valueType == String.class) {
×
179
      return this.name;
×
180
    } else {
181
      return this.name + "[" + valueType.getSimpleName() + "]";
×
182
    }
183
  }
184

185
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc