Skip to content

Commit 8071d52

Browse files
committed
feat(schema): Add TypeName enum
1 parent 6f9d443 commit 8071d52

2 files changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.retailsvc.http.spec.schema;
2+
3+
public enum TypeName {
4+
STRING,
5+
NUMBER,
6+
INTEGER,
7+
BOOLEAN,
8+
OBJECT,
9+
ARRAY,
10+
NULL;
11+
12+
public static TypeName fromJsonSchema(String name) {
13+
return switch (name) {
14+
case "string" -> STRING;
15+
case "number" -> NUMBER;
16+
case "integer" -> INTEGER;
17+
case "boolean" -> BOOLEAN;
18+
case "object" -> OBJECT;
19+
case "array" -> ARRAY;
20+
case "null" -> NULL;
21+
default -> throw new IllegalArgumentException("unknown JSON Schema type: " + name);
22+
};
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.retailsvc.http.spec.schema;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
6+
import org.junit.jupiter.api.Test;
7+
8+
class TypeNameTest {
9+
@Test
10+
void parsesAllSevenJsonSchemaTypes() {
11+
assertThat(TypeName.fromJsonSchema("string")).isEqualTo(TypeName.STRING);
12+
assertThat(TypeName.fromJsonSchema("number")).isEqualTo(TypeName.NUMBER);
13+
assertThat(TypeName.fromJsonSchema("integer")).isEqualTo(TypeName.INTEGER);
14+
assertThat(TypeName.fromJsonSchema("boolean")).isEqualTo(TypeName.BOOLEAN);
15+
assertThat(TypeName.fromJsonSchema("object")).isEqualTo(TypeName.OBJECT);
16+
assertThat(TypeName.fromJsonSchema("array")).isEqualTo(TypeName.ARRAY);
17+
assertThat(TypeName.fromJsonSchema("null")).isEqualTo(TypeName.NULL);
18+
}
19+
20+
@Test
21+
void unknownTypeNameThrows() {
22+
assertThrows(IllegalArgumentException.class, () -> TypeName.fromJsonSchema("widget"));
23+
}
24+
}

0 commit comments

Comments
 (0)