11package org .a2aproject .sdk .spec ;
22
3- import java .util .ArrayList ;
4- import java .util .Collections ;
5- import java .util .List ;
6- import java .util .Map ;
7-
83import org .a2aproject .sdk .util .Assert ;
94import org .jspecify .annotations .Nullable ;
105
6+ import java .util .List ;
7+ import java .util .Map ;
8+
119/**
1210 * The AgentCard is a self-describing manifest for an agent in the A2A Protocol.
1311 * <p>
@@ -89,6 +87,14 @@ public record AgentCard(
8987 Assert .checkNotNullParam ("skills" , skills );
9088 Assert .checkNotNullParam ("supportedInterfaces" , supportedInterfaces );
9189 Assert .checkNotNullParam ("version" , version );
90+ defaultInputModes = List .copyOf (defaultInputModes );
91+ defaultOutputModes = List .copyOf (defaultOutputModes );
92+ skills = List .copyOf (skills );
93+ securitySchemes = securitySchemes == null ? null : Map .copyOf (securitySchemes );
94+ securityRequirements = securityRequirements == null ? null : List .copyOf (securityRequirements );
95+ supportedInterfaces = List .copyOf (supportedInterfaces );
96+ signatures = signatures == null ? null : List .copyOf (signatures );
97+ additionalInterfaces = additionalInterfaces == null ? null : List .copyOf (additionalInterfaces );
9298 }
9399
94100 /**
@@ -184,17 +190,17 @@ private Builder(AgentCard card) {
184190 this .version = card .version ();
185191 this .documentationUrl = card .documentationUrl ();
186192 this .capabilities = card .capabilities ();
187- this .defaultInputModes = card . defaultInputModes () != null ? new ArrayList <>( card .defaultInputModes ()) : Collections . emptyList ( );
188- this .defaultOutputModes = card . defaultOutputModes () != null ? new ArrayList <>( card .defaultOutputModes ()) : Collections . emptyList ( );
189- this .skills = card . skills () != null ? new ArrayList <>( card .skills ()) : Collections . emptyList ( );
190- this .securitySchemes = card .securitySchemes () != null ? Map .copyOf (card .securitySchemes ()) : Collections . emptyMap () ;
191- this .securityRequirements = card .securityRequirements () != null ? new ArrayList <> (card .securityRequirements ()) : Collections . emptyList () ;
193+ this .defaultInputModes = List . copyOf ( card .defaultInputModes ());
194+ this .defaultOutputModes = List . copyOf ( card .defaultOutputModes ());
195+ this .skills = List . copyOf ( card .skills ());
196+ this .securitySchemes = card .securitySchemes () != null ? Map .copyOf (card .securitySchemes ()) : null ;
197+ this .securityRequirements = card .securityRequirements () != null ? List . copyOf (card .securityRequirements ()) : null ;
192198 this .iconUrl = card .iconUrl ();
193- this .supportedInterfaces = card . supportedInterfaces () != null ? new ArrayList <>( card .supportedInterfaces ()) : Collections . emptyList ( );
194- this .signatures = card .signatures () != null ? new ArrayList <> (card .signatures ()) : null ;
199+ this .supportedInterfaces = List . copyOf ( card .supportedInterfaces ());
200+ this .signatures = card .signatures () != null ? List . copyOf (card .signatures ()) : null ;
195201 this .url = card .url ();
196202 this .preferredTransport = card .preferredTransport ();
197- this .additionalInterfaces = card .additionalInterfaces () != null ? new ArrayList <> (card .additionalInterfaces ()) : null ;
203+ this .additionalInterfaces = card .additionalInterfaces () != null ? List . copyOf (card .additionalInterfaces ()) : null ;
198204 }
199205
200206 /**
@@ -276,7 +282,7 @@ public Builder capabilities(AgentCapabilities capabilities) {
276282 * @return this builder for method chaining
277283 */
278284 public Builder defaultInputModes (List <String > defaultInputModes ) {
279- this .defaultInputModes = defaultInputModes ;
285+ this .defaultInputModes = List . copyOf ( defaultInputModes ) ;
280286 return this ;
281287 }
282288
@@ -289,7 +295,7 @@ public Builder defaultInputModes(List<String> defaultInputModes) {
289295 * @return this builder for method chaining
290296 */
291297 public Builder defaultOutputModes (List <String > defaultOutputModes ) {
292- this .defaultOutputModes = defaultOutputModes ;
298+ this .defaultOutputModes = List . copyOf ( defaultOutputModes ) ;
293299 return this ;
294300 }
295301
@@ -304,7 +310,7 @@ public Builder defaultOutputModes(List<String> defaultOutputModes) {
304310 * @see AgentSkill
305311 */
306312 public Builder skills (List <AgentSkill > skills ) {
307- this .skills = skills ;
313+ this .skills = List . copyOf ( skills ) ;
308314 return this ;
309315 }
310316
@@ -319,7 +325,7 @@ public Builder skills(List<AgentSkill> skills) {
319325 * @see SecurityScheme
320326 */
321327 public Builder securitySchemes (Map <String , SecurityScheme > securitySchemes ) {
322- this .securitySchemes = securitySchemes ;
328+ this .securitySchemes = Map . copyOf ( securitySchemes ) ;
323329 return this ;
324330 }
325331
@@ -331,7 +337,7 @@ public Builder securitySchemes(Map<String, SecurityScheme> securitySchemes) {
331337 * @see SecurityRequirement
332338 */
333339 public Builder securityRequirements (List <SecurityRequirement > securityRequirements ) {
334- this .securityRequirements = securityRequirements ;
340+ this .securityRequirements = List . copyOf ( securityRequirements ) ;
335341 return this ;
336342 }
337343
@@ -366,7 +372,7 @@ public Builder iconUrl(String iconUrl) {
366372 * @see AgentInterface
367373 */
368374 public Builder supportedInterfaces (List <AgentInterface > supportedInterfaces ) {
369- this .supportedInterfaces = supportedInterfaces ;
375+ this .supportedInterfaces = List . copyOf ( supportedInterfaces ) ;
370376 return this ;
371377 }
372378
@@ -381,7 +387,7 @@ public Builder supportedInterfaces(List<AgentInterface> supportedInterfaces) {
381387 * @see AgentCardSignature
382388 */
383389 public Builder signatures (List <AgentCardSignature > signatures ) {
384- this .signatures = signatures ;
390+ this .signatures = List . copyOf ( signatures ) ;
385391 return this ;
386392 }
387393
@@ -396,7 +402,7 @@ public Builder url(String url) {
396402 }
397403
398404 public Builder additionalInterfaces (List <Legacy_0_3_AgentInterface > additionalInterfaces ) {
399- this .additionalInterfaces = additionalInterfaces ;
405+ this .additionalInterfaces = List . copyOf ( additionalInterfaces ) ;
400406 return this ;
401407 }
402408
0 commit comments