Skip to content

[Refactoring]: Refactor version header validation into a shared validator #118

Description

@MisterVVP

Summary

Move ValidateVersionHeader out of the REST and JSON-RPC transport implementations into a dedicated validator class. Transports should own the validator via composition and invoke it when validating incoming requests.

Motivation

REST and JSON-RPC transports currently carry transport-local version header validation logic. As more transport-level validation has moved behind shared validator classes, version validation should follow the same pattern to keep transport classes focused on routing, parsing, and response mapping.

Proposed Change

  • Add a server-side validator class, for example VersionHeaderValidator.
  • Store the required version-header policy in the validator constructor.
  • Replace RestServerTransport::ValidateVersionHeader and JsonRpcServerTransport::ValidateVersionHeader with direct calls to the composed validator.
  • Keep transport-specific error response formatting in the transport classes.
  • Add or update focused unit/functional coverage for:
    • missing A2A-Version when required,
    • missing A2A-Version when optional,
    • unsupported A2A-Version,
    • accepted supported version.

Acceptance Criteria

  • REST and JSON-RPC transports no longer define private ValidateVersionHeader member functions.
  • Both transports compose and invoke the shared version validator.
  • Existing version validation behavior and protocol error mapping remain unchanged.
  • Formatting, unit tests, and clang-tidy pass.

Metadata

Metadata

Assignees

Labels

refactoringConstant technical improvements which are not necessarily related to any issue.

Projects

Status
Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions