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

knowledgepixels / nanopub-query / 20414263980

21 Dec 2025 06:37PM UTC coverage: 71.251%. Remained the same
20414263980

push

github

ashleycaselli
chore: code clean up

214 of 326 branches covered (65.64%)

Branch coverage included in aggregate %.

589 of 801 relevant lines covered (73.53%)

11.09 hits per line

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

73.02
src/main/java/com/knowledgepixels/query/OpenApiSpecPage.java
1
package com.knowledgepixels.query;
2

3
import com.knowledgepixels.query.GrlcSpec.InvalidGrlcSpecException;
4
import io.vertx.core.MultiMap;
5
import org.yaml.snakeyaml.DumperOptions;
6
import org.yaml.snakeyaml.Yaml;
7

8
import java.util.*;
9

10
/**
11
 * Page for Open API compliant specification.
12
 */
13
public class OpenApiSpecPage {
14

15
    private Map<String, Object> dataMap = new LinkedHashMap<>();
15✔
16

17
    /**
18
     * Creates a new page instance.
19
     *
20
     * @param requestUrl The request URL
21
     * @param parameters The URL request parameters
22
     * @throws InvalidGrlcSpecException If the GRLC specification is invalid
23
     */
24
    public OpenApiSpecPage(String requestUrl, MultiMap parameters) throws InvalidGrlcSpecException {
6✔
25
        GrlcSpec grlcSpec = new GrlcSpec(requestUrl, parameters);
18✔
26

27

28
        dataMap.put("openapi", "3.0.4");
18✔
29

30
        Map<String, Object> infoMap = new LinkedHashMap<>();
12✔
31
        infoMap.put("title", grlcSpec.getLabel());
18✔
32
        infoMap.put("description", "API definition source: <a target=\"_blank\" href=\"" + grlcSpec.getNanopub().getUri() +
27✔
33
                                   "\"><svg height=\"0.8em\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 8 8\"><path d=\"M5,8H8L3,0H0M8,4.8V0H5M0,3.2V8H3\"/></svg> " +
34
                                   grlcSpec.getArtifactCode().substring(0, 10) + "</a>");
15✔
35
        infoMap.put("version", grlcSpec.getArtifactCode().substring(0, 10));
27✔
36
        dataMap.put("info", infoMap);
18✔
37

38
        List<Object> serversList = new ArrayList<>();
12✔
39
        Map<String, Object> serverMap = new LinkedHashMap<>();
12✔
40
        serverMap.put("url", Utils.getEnvString("NANOPUB_QUERY_URL", "http://localhost:9393/") + "api/" + grlcSpec.getArtifactCode());
30✔
41
        serverMap.put("description", "This Nanopub Query instance");
15✔
42
        serversList.add(serverMap);
12✔
43
        dataMap.put("servers", serversList);
18✔
44

45
        Map<String, Object> pathsMap = new LinkedHashMap<>();
12✔
46
        Map<String, Object> rootPathMap = new LinkedHashMap<>();
12✔
47
        Map<String, Object> getOpMap = new LinkedHashMap<>();
12✔
48
        //getOpMap.put("summary", label);
49
        getOpMap.put("description", grlcSpec.getDescription());
18✔
50
        Map<String, Object> responsesMap = new LinkedHashMap<>();
12✔
51
        Map<String, Object> successrespMap = new LinkedHashMap<>();
12✔
52
        Map<String, Object> contentMap = new LinkedHashMap<>();
12✔
53
        contentMap.put("text/csv", new HashMap<>());
21✔
54
        contentMap.put("application/json", new HashMap<>());
21✔
55
        successrespMap.put("content", contentMap);
15✔
56
        successrespMap.put("description", "result table");
15✔
57
        responsesMap.put("200", successrespMap);
15✔
58
        List<Object> parametersList = new ArrayList<>();
12✔
59

60
        final Map<String, Object> stringType = new LinkedHashMap<>();
12✔
61
        stringType.put("type", "string");
15✔
62
        final Map<String, Object> stringListType = new LinkedHashMap<>();
12✔
63
        stringListType.put("type", "array");
15✔
64
        stringListType.put("items", stringType);
15✔
65

66
        for (String p : grlcSpec.getPlaceholdersList()) {
21!
67
            Map<String, Object> paramMap = new LinkedHashMap<>();
×
68
            paramMap.put("in", "query");
×
69
            String name = GrlcSpec.getParamName(p);
×
70
            paramMap.put("name", name);
×
71
            paramMap.put("required", !GrlcSpec.isOptionalPlaceholder(p));
×
72
            if (GrlcSpec.isMultiPlaceholder(p)) {
×
73
                paramMap.put("style", "form");
×
74
                paramMap.put("explde", "true");
×
75
                paramMap.put("schema", stringListType);
×
76
            } else {
77
                paramMap.put("schema", stringType);
×
78
            }
79
            parametersList.add(paramMap);
×
80
        }
×
81
        getOpMap.put("parameters", parametersList);
15✔
82
        getOpMap.put("responses", responsesMap);
15✔
83
        rootPathMap.put("get", getOpMap);
15✔
84
        pathsMap.put("/" + grlcSpec.getQueryName(), rootPathMap);
21✔
85
        dataMap.put("paths", pathsMap);
18✔
86
    }
3✔
87

88
    /**
89
     * Returns the Open API spec as a string.
90
     *
91
     * @return Open API specification string
92
     */
93
    public String getSpec() {
94
        final DumperOptions options = new DumperOptions();
12✔
95
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
9✔
96
        options.setPrettyFlow(true);
9✔
97
        return new Yaml(options).dump(dataMap);
24✔
98
    }
99

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