Skip to content

Commit 2d381ab

Browse files
committed
Fix type conversions issues in MCP. Add more tests
1 parent c326e27 commit 2d381ab

File tree

12 files changed

+1326
-19
lines changed

12 files changed

+1326
-19
lines changed

core/src/main/java/software/amazon/smithy/java/core/serde/document/DocumentParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ public <T> void writeList(Schema schema, T state, int size, BiConsumer<T, ShapeS
107107

108108
@Override
109109
public <T> void writeMap(Schema schema, T state, int size, BiConsumer<T, MapSerializer> consumer) {
110+
if (schema.type() == ShapeType.DOCUMENT) {
111+
var serializer = new DocumentMapSerializer(size);
112+
consumer.accept(state, serializer);
113+
setResult(new Documents.StringMapDocument(Documents.STR_MAP_SCHEMA, serializer.entries));
114+
return;
115+
}
110116
var keyMember = schema.mapKeyMember();
111117
if (keyMember.type() == ShapeType.STRING || keyMember.type() == ShapeType.ENUM) {
112118
var serializer = new DocumentMapSerializer(size);

core/src/test/java/software/amazon/smithy/java/core/serde/document/DocumentParserTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package software.amazon.smithy.java.core.serde.document;
77

88
import static org.hamcrest.MatcherAssert.assertThat;
9+
import static org.hamcrest.Matchers.aMapWithSize;
910
import static org.hamcrest.Matchers.equalTo;
1011
import static org.hamcrest.Matchers.hasSize;
1112
import static org.hamcrest.Matchers.nullValue;
@@ -36,4 +37,21 @@ public void doesNotDropNullListValues() {
3637
assertThat(parser.getResult().asList().get(2).asString(), equalTo("There"));
3738
assertThat(parser.getResult().asList().get(3), nullValue());
3839
}
40+
41+
@Test
42+
void writesMapWithDocumentSchema() {
43+
DocumentParser parser = new DocumentParser();
44+
parser.writeMap(PreludeSchemas.DOCUMENT, null, 2, (_ignore, ser) -> {
45+
ser.writeEntry(PreludeSchemas.STRING, "key1", null, (state, valueSer) -> {
46+
valueSer.writeString(PreludeSchemas.STRING, "value1");
47+
});
48+
ser.writeEntry(PreludeSchemas.STRING, "key2", null, (state, valueSer) -> {
49+
valueSer.writeInteger(PreludeSchemas.INTEGER, 42);
50+
});
51+
});
52+
53+
assertThat(parser.getResult().asStringMap(), aMapWithSize(2));
54+
assertThat(parser.getResult().asStringMap().get("key1").asString(), equalTo("value1"));
55+
assertThat(parser.getResult().asStringMap().get("key2").asNumber().intValue(), equalTo(42));
56+
}
3957
}

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jline = "3.30.6"
2020
graalvm-native = "0.11.3"
2121
shadow = "8.3.9"
2222
jazzer = "0.28.0"
23+
json-schema-validator = "1.5.5"
2324

2425
[libraries]
2526
smithy-model = { module = "software.amazon.smithy:smithy-model", version.ref = "smithy" }
@@ -63,6 +64,7 @@ hamcrest = { module = "org.hamcrest:hamcrest", version.ref = "hamcrest" }
6364
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj"}
6465
jazzer-junit = { module = "com.code-intelligence:jazzer-junit", version.ref = "jazzer" }
6566
jazzer-api = { module = "com.code-intelligence:jazzer-api", version.ref = "jazzer" }
67+
json-schema-validator = { module = "com.networknt:json-schema-validator", version.ref = "json-schema-validator"}
6668

6769
# plugin artifacts for buildsrc plugins
6870
test-logger-plugin = { module = "com.adarshr:gradle-test-logger-plugin", version.ref = "test-logger-plugin" }

mcp/mcp-server/build.gradle.kts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("smithy-java.module-conventions")
3+
id("smithy-java.codegen-plugin-conventions")
34
}
45

56
description =
@@ -21,18 +22,13 @@ dependencies {
2122
testRuntimeOnly(libs.smithy.aws.traits)
2223
testRuntimeOnly(project(":aws:client:aws-client-awsjson"))
2324
testImplementation(project(":server:server-proxy"))
24-
}
25-
26-
java {
27-
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
28-
}
2925

30-
tasks {
31-
compileJava {
32-
options.release.set(21)
33-
}
26+
testImplementation(project(":codegen:plugins:server-codegen"))
27+
testImplementation(libs.json.schema.validator)
3428
}
3529

3630
spotbugs {
3731
ignoreFailures = true
3832
}
33+
34+
addGenerateSrcsTask("software.amazon.smithy.java.mcp.server.utils.TestJavaCodegenRunner", null, null, "server")

0 commit comments

Comments
 (0)