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

pkiraly / metadata-qa-api / #746

24 Feb 2026 03:37PM UTC coverage: 85.581% (-0.1%) from 85.701%
#746

push

web-flow
Merge pull request #284 from pkiraly/dependabot/maven/org.apache.maven.plugins-maven-surefire-plugin-3.5.5

build(deps-dev): bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.4 to 3.5.5

5686 of 6644 relevant lines covered (85.58%)

0.86 hits per line

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

77.5
/src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/LinkValidityChecker.java
1
package de.gwdg.metadataqa.api.rule.singlefieldchecker;
2

3
import de.gwdg.metadataqa.api.counter.FieldCounter;
4
import de.gwdg.metadataqa.api.json.DataElement;
5
import de.gwdg.metadataqa.api.model.XmlFieldInstance;
6
import de.gwdg.metadataqa.api.model.selector.Selector;
7
import de.gwdg.metadataqa.api.rule.RuleCheckerOutput;
8
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputStatus;
9
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputType;
10
import de.gwdg.metadataqa.api.util.LinkValidator;
11

12
import java.io.IOException;
13
import java.util.List;
14
import java.util.logging.Logger;
15

16
public class LinkValidityChecker extends SingleFieldChecker {
17

18
  public static final String PREFIX = "validLink";
19
  protected LinkValidator linkValidator;
20
  protected Boolean expectedValue;
21

22
  private static final Logger LOGGER = Logger.getLogger(LinkValidityChecker.class.getCanonicalName());
1✔
23

24
  /**
25
   * @param field The data element to check
26
   * @param expectedValue Is the link expected to be valid?
27
   */
28
  public LinkValidityChecker(DataElement field, Boolean expectedValue) {
29
    this(field, field.getLabel(), expectedValue, LinkValidator.DEFAULT_TIMEOUT);
1✔
30
  }
1✔
31

32
  public LinkValidityChecker(DataElement field, String header, Boolean expectedValue, int timeout) {
33
    super(field, header + ":" + PREFIX);
1✔
34
    this.expectedValue = expectedValue;
1✔
35
    linkValidator = new LinkValidator(timeout);
1✔
36
  }
1✔
37

38
  @Override
39
  public void update(Selector selector, FieldCounter<RuleCheckerOutput> results, RuleCheckingOutputType outputType) {
40
    if (isDebug())
1✔
41
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id);
×
42

43
    var allPassed = true;
1✔
44
    var isNA = true;
1✔
45
    int instanceCount = 0;
1✔
46
    int failureCount = 0;
1✔
47
    List<XmlFieldInstance> instances = selector.get(field);
1✔
48
    if (instances != null && !instances.isEmpty()) {
1✔
49
      for (XmlFieldInstance instance : instances) {
1✔
50
        if (instance.hasValue()) {
1✔
51
          if (countInstances())
1✔
52
            instanceCount++;
1✔
53
          isNA = false;
1✔
54
          try {
55
            boolean isValid = linkValidator.isValid(instance.getValue());
1✔
56
            if (isDebug())
1✔
57
              LOGGER.info(String.format("value: '%s' -> '%s'", instance.getValue(), isValid));
×
58
            if (isValid != expectedValue) {
1✔
59
              allPassed = false;
1✔
60
              if (countInstances())
1✔
61
                failureCount++;
×
62
            }
63
          } catch (IOException e) {
×
64
            LOGGER.warning(String.format("%s: %s", e.getClass().getSimpleName(), e.getMessage()));
×
65
            allPassed = false;
×
66
            if (countInstances())
×
67
              failureCount++;
×
68
          }
1✔
69
          if (!countInstances() && !allPassed)
1✔
70
            break;
1✔
71
        }
72
      }
1✔
73
    }
74

75
    addOutput(results, isNA, allPassed, outputType, instanceCount, failureCount);
1✔
76
    if (isDebug())
1✔
77
      LOGGER.info(this.getClass().getSimpleName() + " " + this.id + ") result: " + RuleCheckingOutputStatus.create(isNA, allPassed, isMandatory()));
×
78
  }
1✔
79
}
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