Skip to content

[Feat]: Simplification of the client API? #517

@jmesnil

Description

@jmesnil

Is your feature request related to a problem? Please describe.

The client API is a thin wrapper around the domain objects in the spec module.

I wonder if we could not make the API a bit simpler while retaining all the capabilities it exposes.

Describe the solution you'd like

For example, a lot of calls wrap their parameters in XXXParams object:

public Task cancelTask(TaskIdParams request)

but TaskIdParams is composed of a taskId and a metadata map.
Could the call simply be:

public Task cancelTask(String taskId, Map<String, Object> metadata) {
  return clientTransport.cancelTask(new TaskIdParams(taskId, metadata), request, context);
}

and a default method:

public default Task cancelTask(String taskId) {
    return cancelTask(taskId, emptyMap();
}

This way, the TaskIdParams does not leak to the Client API (making it bigger than it needs to be.

The API is already to that for its sendMessage methods that hides the internal MessageSendParams.
This is a pattern that should be applied to other methods as well

Describe alternatives you've considered

No response

Additional context

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions