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

devonfw / IDEasy / 9904178931

12 Jul 2024 07:32AM UTC coverage: 61.387% (-0.5%) from 61.842%
9904178931

push

github

web-flow
#400: fix error handling for undefined IDE_ROOT and IDE_HOME (#476)

1997 of 3575 branches covered (55.86%)

Branch coverage included in aggregate %.

5297 of 8307 relevant lines covered (63.77%)

2.8 hits per line

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

49.15
cli/src/main/java/com/devonfw/tools/ide/log/AbstractIdeSubLogger.java
1
package com.devonfw.tools.ide.log;
2

3
/**
4
 * Abstract base implementation of {@link IdeSubLogger}.
5
 */
6
public abstract class AbstractIdeSubLogger implements IdeSubLogger {
7

8
  /** @see #getLevel() */
9
  protected final IdeLogLevel level;
10

11
  /**
12
   * The constructor.
13
   *
14
   * @param level the {@link #getLevel() log-level}.
15
   */
16
  public AbstractIdeSubLogger(IdeLogLevel level) {
17

18
    super();
2✔
19
    this.level = level;
3✔
20
  }
1✔
21

22
  @Override
23
  public IdeLogLevel getLevel() {
24

25
    return this.level;
×
26
  }
27

28
  /**
29
   * Should only be used internally by logger implementation.
30
   *
31
   * @param message the message template.
32
   * @param args the dynamic arguments to fill in.
33
   * @return the resolved message with the parameters filled in.
34
   */
35
  protected String compose(String message, Object... args) {
36

37
    int pos = message.indexOf("{}");
4✔
38
    if (pos < 0) {
2!
39
      if (args.length > 0) {
×
40
        invalidMessage(message, false, args);
×
41
      }
42
      return message;
×
43
    }
44
    int argIndex = 0;
2✔
45
    int start = 0;
2✔
46
    int length = message.length();
3✔
47
    StringBuilder sb = new StringBuilder(length + 48);
7✔
48
    while (pos >= 0) {
2✔
49
      sb.append(message, start, pos);
6✔
50
      sb.append(args[argIndex++]);
7✔
51
      start = pos + 2;
4✔
52
      pos = message.indexOf("{}", start);
5✔
53
      if ((argIndex >= args.length) && (pos > 0)) {
6!
54
        invalidMessage(message, true, args);
×
55
        pos = -1;
×
56
      }
57
    }
58
    if (start < length) {
3✔
59
      String rest = message.substring(start);
4✔
60
      sb.append(rest);
4✔
61
    }
62
    if (argIndex < args.length) {
4!
63
      invalidMessage(message, false, args);
×
64
    }
65
    return sb.toString();
3✔
66
  }
67

68
  private void invalidMessage(String message, boolean more, Object[] args) {
69

70
    warning("Invalid log message with " + args.length + " argument(s) but " + (more ? "more" : "less")
×
71
        + " placeholders: " + message);
72
  }
×
73

74
  private void warning(String message) {
75

76
    boolean colored = isColored();
×
77
    if (colored) {
×
78
      System.err.print(IdeLogLevel.ERROR.getEndColor());
×
79
      System.err.print(IdeLogLevel.ERROR.getStartColor());
×
80
    }
81
    System.err.println(message);
×
82
    if (colored) {
×
83
      System.err.print(IdeLogLevel.ERROR.getEndColor());
×
84
    }
85
  }
×
86

87
  /**
88
   * @return {@code true} if colored logging is used, {@code false} otherwise.
89
   */
90
  protected boolean isColored() {
91

92
    return false;
×
93
  }
94

95
  @Override
96
  public String toString() {
97

98
    return getClass().getSimpleName() + "@" + this.level;
×
99
  }
100

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

© 2025 Coveralls, Inc