Skip to content

Commit e2bb967

Browse files
authored
fix: duplication of parameters in json for defining subtypes. (#241)
fixed #234 fix kind dublicate because classes have gatKind method and add correctly JsonTypeName for type
1 parent 0cb88e3 commit e2bb967

18 files changed

+201
-7
lines changed

spec/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@
3737
<artifactId>junit-jupiter-api</artifactId>
3838
<scope>test</scope>
3939
</dependency>
40+
<dependency>
41+
<groupId>org.junit.jupiter</groupId>
42+
<artifactId>junit-jupiter-params</artifactId>
43+
<scope>test</scope>
44+
</dependency>
4045
</dependencies>
4146

4247
</project>

spec/src/main/java/io/a2a/spec/APIKeySecurityScheme.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
55
import com.fasterxml.jackson.annotation.JsonInclude;
66
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.annotation.JsonTypeName;
78
import com.fasterxml.jackson.annotation.JsonValue;
89

910
import io.a2a.util.Assert;
1011

12+
import static io.a2a.spec.APIKeySecurityScheme.API_KEY;
13+
1114
/**
1215
* Defines a security scheme using an API key.
1316
*/
17+
@JsonTypeName(API_KEY)
1418
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1519
@JsonIgnoreProperties(ignoreUnknown = true)
1620
public final class APIKeySecurityScheme implements SecurityScheme {
@@ -64,6 +68,7 @@ public APIKeySecurityScheme(@JsonProperty("in") String in, @JsonProperty("name")
6468
@JsonProperty("description") String description, @JsonProperty("type") String type) {
6569
Assert.checkNotNullParam("in", in);
6670
Assert.checkNotNullParam("name", name);
71+
Assert.checkNotNullParam("type", type);
6772
if (! type.equals(API_KEY)) {
6873
throw new IllegalArgumentException("Invalid type for APIKeySecurityScheme");
6974
}

spec/src/main/java/io/a2a/spec/DataPart.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,20 @@
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
88
import com.fasterxml.jackson.annotation.JsonProperty;
9+
import com.fasterxml.jackson.annotation.JsonTypeName;
910
import io.a2a.util.Assert;
1011

12+
import static io.a2a.spec.DataPart.DATA;
13+
1114
/**
1215
* Represents a structured data segment (e.g., JSON) within a message or artifact.
1316
*/
17+
@JsonTypeName(DATA)
1418
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1519
@JsonIgnoreProperties(ignoreUnknown = true)
1620
public class DataPart extends Part<Map<String, Object>> {
1721

22+
public static final String DATA = "data";
1823
private final Map<String, Object> data;
1924
private final Map<String, Object> metadata;
2025
private final Kind kind;

spec/src/main/java/io/a2a/spec/EventKind.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
@JsonTypeInfo(
1010
use = JsonTypeInfo.Id.NAME,
11-
include = JsonTypeInfo.As.PROPERTY,
11+
include = JsonTypeInfo.As.EXISTING_PROPERTY,
1212
property = "kind",
1313
visible = true
1414
)

spec/src/main/java/io/a2a/spec/FilePart.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,21 @@
66
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
77
import com.fasterxml.jackson.annotation.JsonInclude;
88
import com.fasterxml.jackson.annotation.JsonProperty;
9+
import com.fasterxml.jackson.annotation.JsonTypeName;
910
import io.a2a.util.Assert;
1011

12+
import static io.a2a.spec.FilePart.FILE;
13+
1114
/**
1215
* Represents a file segment within a message or artifact. The file content can be
1316
* provided either directly as bytes or as a URI.
1417
*/
18+
@JsonTypeName(FILE)
1519
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1620
@JsonIgnoreProperties(ignoreUnknown = true)
1721
public class FilePart extends Part<FileContent> {
1822

23+
public static final String FILE = "file";
1924
private final FileContent file;
2025
private final Map<String, Object> metadata;
2126
private final Kind kind;

spec/src/main/java/io/a2a/spec/HTTPAuthSecurityScheme.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
import com.fasterxml.jackson.annotation.JsonInclude;
66
import com.fasterxml.jackson.annotation.JsonProperty;
77

8+
import com.fasterxml.jackson.annotation.JsonTypeName;
89
import io.a2a.util.Assert;
910

11+
import static io.a2a.spec.HTTPAuthSecurityScheme.HTTP;
12+
1013
/**
1114
* Defines a security scheme using HTTP authentication.
1215
*/
16+
@JsonTypeName(HTTP)
1317
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1418
@JsonIgnoreProperties(ignoreUnknown = true)
1519
public final class HTTPAuthSecurityScheme implements SecurityScheme {
@@ -28,6 +32,7 @@ public HTTPAuthSecurityScheme(String bearerFormat, String scheme, String descrip
2832
public HTTPAuthSecurityScheme(@JsonProperty("bearerFormat") String bearerFormat, @JsonProperty("scheme") String scheme,
2933
@JsonProperty("description") String description, @JsonProperty("type") String type) {
3034
Assert.checkNotNullParam("scheme", scheme);
35+
Assert.checkNotNullParam("type", type);
3136
if (! type.equals(HTTP)) {
3237
throw new IllegalArgumentException("Invalid type for HTTPAuthSecurityScheme");
3338
}

spec/src/main/java/io/a2a/spec/Message.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@
88
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
99
import com.fasterxml.jackson.annotation.JsonInclude;
1010
import com.fasterxml.jackson.annotation.JsonProperty;
11+
import com.fasterxml.jackson.annotation.JsonTypeName;
1112
import com.fasterxml.jackson.annotation.JsonValue;
1213
import com.fasterxml.jackson.core.type.TypeReference;
1314
import io.a2a.util.Assert;
1415

16+
import static io.a2a.spec.Message.MESSAGE;
17+
1518
/**
1619
* Represents a single message in the conversation between a user and an agent.
1720
*/
21+
@JsonTypeName(MESSAGE)
1822
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1923
@JsonIgnoreProperties(ignoreUnknown = true)
2024
public final class Message implements EventKind, StreamingEventKind {

spec/src/main/java/io/a2a/spec/MutualTLSSecurityScheme.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
55
import com.fasterxml.jackson.annotation.JsonInclude;
66
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.annotation.JsonTypeName;
8+
import io.a2a.util.Assert;
9+
10+
import static io.a2a.spec.MutualTLSSecurityScheme.MUTUAL_TLS;
711

812
/**
913
* Defines a security scheme using mTLS authentication.
1014
*/
15+
@JsonTypeName(MUTUAL_TLS)
1116
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1217
@JsonIgnoreProperties(ignoreUnknown = true)
1318
public final class MutualTLSSecurityScheme implements SecurityScheme {
@@ -27,6 +32,7 @@ public MutualTLSSecurityScheme() {
2732
@JsonCreator
2833
public MutualTLSSecurityScheme(@JsonProperty("description") String description,
2934
@JsonProperty("type") String type) {
35+
Assert.checkNotNullParam("type", type);
3036
if (!type.equals(MUTUAL_TLS)) {
3137
throw new IllegalArgumentException("Invalid type for MutualTLSSecurityScheme");
3238
}

spec/src/main/java/io/a2a/spec/OAuth2SecurityScheme.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
import com.fasterxml.jackson.annotation.JsonInclude;
66
import com.fasterxml.jackson.annotation.JsonProperty;
77

8+
import com.fasterxml.jackson.annotation.JsonTypeName;
89
import io.a2a.util.Assert;
910

11+
import static io.a2a.spec.OAuth2SecurityScheme.OAUTH2;
12+
1013
/**
1114
* Defines a security scheme using OAuth 2.0.
1215
*/
16+
@JsonTypeName(OAUTH2)
1317
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1418
@JsonIgnoreProperties(ignoreUnknown = true)
1519
public final class OAuth2SecurityScheme implements SecurityScheme {
@@ -28,6 +32,7 @@ public OAuth2SecurityScheme(OAuthFlows flows, String description, String oauth2M
2832
public OAuth2SecurityScheme(@JsonProperty("flows") OAuthFlows flows, @JsonProperty("description") String description,
2933
@JsonProperty("oauth2MetadataUrl") String oauth2MetadataUrl, @JsonProperty("type") String type) {
3034
Assert.checkNotNullParam("flows", flows);
35+
Assert.checkNotNullParam("type", type);
3136
if (!type.equals(OAUTH2)) {
3237
throw new IllegalArgumentException("Invalid type for OAuth2SecurityScheme");
3338
}

spec/src/main/java/io/a2a/spec/OpenIdConnectSecurityScheme.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
55
import com.fasterxml.jackson.annotation.JsonInclude;
66
import com.fasterxml.jackson.annotation.JsonProperty;
7+
import com.fasterxml.jackson.annotation.JsonTypeName;
8+
import io.a2a.util.Assert;
9+
10+
import static io.a2a.spec.OpenIdConnectSecurityScheme.OPENID_CONNECT;
711

812
/**
913
* Defines a security scheme using OpenID Connect.
1014
*/
15+
@JsonTypeName(OPENID_CONNECT)
1116
@JsonInclude(JsonInclude.Include.NON_ABSENT)
1217
@JsonIgnoreProperties(ignoreUnknown = true)
1318
public final class OpenIdConnectSecurityScheme implements SecurityScheme {
@@ -24,6 +29,8 @@ public OpenIdConnectSecurityScheme(String openIdConnectUrl, String description)
2429
@JsonCreator
2530
public OpenIdConnectSecurityScheme(@JsonProperty("openIdConnectUrl") String openIdConnectUrl,
2631
@JsonProperty("description") String description, @JsonProperty("type") String type) {
32+
Assert.checkNotNullParam("type", type);
33+
Assert.checkNotNullParam("openIdConnectUrl", openIdConnectUrl);
2734
if (!type.equals(OPENID_CONNECT)) {
2835
throw new IllegalArgumentException("Invalid type for OpenIdConnectSecurityScheme");
2936
}

0 commit comments

Comments
 (0)