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

devonfw / IDEasy / 11527033206

26 Oct 2024 12:03AM UTC coverage: 66.759% (-0.05%) from 66.811%
11527033206

push

github

web-flow
#533: Add autocompletion of exit in ide shell (#707)

2402 of 3946 branches covered (60.87%)

Branch coverage included in aggregate %.

6266 of 9038 relevant lines covered (69.33%)

3.05 hits per line

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

76.92
cli/src/main/java/com/devonfw/tools/ide/url/model/file/json/ToolDependencies.java
1
package com.devonfw.tools.ide.url.model.file.json;
2

3
import java.io.BufferedReader;
4
import java.nio.file.Files;
5
import java.nio.file.Path;
6
import java.util.Collections;
7
import java.util.HashMap;
8
import java.util.List;
9
import java.util.Map;
10

11
import com.devonfw.tools.ide.json.JsonMapping;
12
import com.devonfw.tools.ide.version.VersionIdentifier;
13
import com.devonfw.tools.ide.version.VersionRange;
14
import com.fasterxml.jackson.core.type.TypeReference;
15
import com.fasterxml.jackson.databind.ObjectMapper;
16

17
/**
18
 * Container representing data from the "dependencies.json".
19
 *
20
 * @see com.devonfw.tools.ide.url.model.file.UrlDependencyFile
21
 */
22
public class ToolDependencies {
23

24
  private static final ObjectMapper MAPPER = JsonMapping.create();
2✔
25

26
  private static final ToolDependencies EMPTY = new ToolDependencies(Collections.emptyMap());
6✔
27
  private final Map<VersionRange, List<ToolDependency>> dependencies;
28

29
  private ToolDependencies(Map<VersionRange, List<ToolDependency>> dependencies) {
30

31
    super();
2✔
32
    this.dependencies = dependencies;
3✔
33
  }
1✔
34

35
  /**
36
   * @param version the {@link VersionIdentifier} of the tool to install.
37
   * @return The {@link List} of {@link ToolDependency}s for the given tool version.
38
   */
39
  public List<ToolDependency> findDependencies(VersionIdentifier version) {
40

41
    for (Map.Entry<VersionRange, List<ToolDependency>> map : this.dependencies.entrySet()) {
12✔
42
      VersionRange versionRange = map.getKey();
4✔
43
      if (versionRange.contains(version)) {
4!
44
        return map.getValue();
4✔
45
      }
46
    }
×
47
    return Collections.emptyList();
2✔
48
  }
49

50
  /**
51
   * @param file the {@link Path} to the JSON file to load.
52
   * @return the loaded {@link ToolDependencies} or the {@link #getEmpty() empty instance} if given {@link Path} does not exist.
53
   */
54
  public static ToolDependencies of(Path file) {
55

56
    if (Files.exists(file)) {
5!
57
      try (BufferedReader reader = Files.newBufferedReader(file)) {
3✔
58
        TypeReference<HashMap<VersionRange, List<ToolDependency>>> typeRef = new TypeReference<>() {
7✔
59
        };
60
        Map<VersionRange, List<ToolDependency>> dependencies = MAPPER.readValue(reader, typeRef);
6✔
61
        return new ToolDependencies(dependencies);
7✔
62
      } catch (Exception e) {
×
63
        throw new IllegalStateException("Failed to load " + file, e);
×
64
      }
65
    } else {
66
      return EMPTY;
×
67
    }
68
  }
69

70
  /**
71
   * @return the empty instance of {@link ToolDependencies}.
72
   */
73
  public static ToolDependencies getEmpty() {
74

75
    return EMPTY;
2✔
76
  }
77

78
}
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