Skip to content

Commit 99601c8

Browse files
committed
feat: Preserve OpenAPI extensions on Info
1 parent 728274f commit 99601c8

5 files changed

Lines changed: 22 additions & 4 deletions

File tree

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
package com.retailsvc.http.spec;
22

3-
public record Info(String title, String version) {}
3+
import java.util.Map;
4+
5+
public record Info(String title, String version, Map<String, Object> extensions) {}

src/main/java/com/retailsvc/http/spec/Spec.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ private static String stripPrefix(String ref, String prefix) {
100100
}
101101

102102
private static Info parseInfo(Map<String, Object> raw) {
103-
return new Info((String) raw.get("title"), (String) raw.get("version"));
103+
return new Info((String) raw.get("title"), (String) raw.get("version"), extractExtensions(raw));
104104
}
105105

106106
private static List<Server> parseServers(List<Map<String, Object>> raw) {

src/test/java/com/retailsvc/http/internal/RequestPreparationFilterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ private HttpExchange exchange(String method, String path, byte[] body) {
4545
private Spec specWith(Operation... ops) {
4646
return new Spec(
4747
"3.1.0",
48-
new Info("t", "1"),
48+
new Info("t", "1", Map.of()),
4949
List.of(new Server("/")),
5050
List.of(ops),
5151
Map.of(),

src/test/java/com/retailsvc/http/spec/ExtensionsTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,20 @@ void specExtensionsEmptyWhenNoXKeys() {
4141
Spec spec = Spec.from(raw);
4242
assertThat(spec.extensions()).isEmpty();
4343
}
44+
45+
@Test
46+
void infoExtensionsExposeXKeys() {
47+
Map<String, Object> raw =
48+
Map.of(
49+
"openapi",
50+
"3.1.0",
51+
"info",
52+
Map.of("title", "t", "version", "1", "x-contact-team", "platform"),
53+
"servers",
54+
List.of(Map.of("url", "https://example.com")),
55+
"paths",
56+
Map.of());
57+
Spec spec = Spec.from(raw);
58+
assertThat(spec.info().extensions()).containsEntry("x-contact-team", "platform");
59+
}
4460
}

src/test/java/com/retailsvc/http/spec/SpecRecordsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void serverHasUrl() {
3333

3434
@Test
3535
void infoHasTitleAndVersion() {
36-
Info i = new Info("test", "1.0.0");
36+
Info i = new Info("test", "1.0.0", Map.of());
3737
assertThat(i.title()).isEqualTo("test");
3838
assertThat(i.version()).isEqualTo("1.0.0");
3939
}

0 commit comments

Comments
 (0)