From e1d677c3ef81de879316705f8d66d6ce3fd0323d Mon Sep 17 00:00:00 2001 From: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com> Date: Mon, 14 Mar 2022 16:31:17 +0100 Subject: [PATCH] Return a wrapper `GetUserResponse` type for the Java bindings (#13276) Fixes https://github.com/digital-asset/daml/issues/13274 changelog_begin [Java bindings] The `UserManagementClient.getUser` methods have been changed to return a custom wrapper type `GetUserResponse` instead of a `User` directly. If you were already using these methods, you can make your code work as before by adding a call to the `getUser` method defined on the `GetUserResponse` type you now get back. You can read more about this issue here: https://github.com/digital-asset/daml/issues/13274 changelog_end --- .../ledger/rxjava/UserManagementClient.java | 4 +- .../rxjava/grpc/UserManagementClientImpl.java | 9 ++-- .../ledger/javaapi/data/GetUserResponse.java | 48 +++++++++++++++++++ 3 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 language-support/java/bindings/src/main/java/com/daml/ledger/javaapi/data/GetUserResponse.java diff --git a/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/UserManagementClient.java b/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/UserManagementClient.java index 7df76ac816..5b9c8ee3a6 100644 --- a/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/UserManagementClient.java +++ b/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/UserManagementClient.java @@ -14,9 +14,9 @@ public interface UserManagementClient { Single createUser(@NonNull CreateUserRequest request, String accessToken); - Single getUser(@NonNull GetUserRequest request); + Single getUser(@NonNull GetUserRequest request); - Single getUser(@NonNull GetUserRequest request, String accessToken); + Single getUser(@NonNull GetUserRequest request, String accessToken); Single deleteUser(@NonNull DeleteUserRequest request); diff --git a/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/grpc/UserManagementClientImpl.java b/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/grpc/UserManagementClientImpl.java index 8900488fba..a9e9bbf73a 100644 --- a/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/grpc/UserManagementClientImpl.java +++ b/language-support/java/bindings-rxjava/src/main/java/com/daml/ledger/rxjava/grpc/UserManagementClientImpl.java @@ -50,22 +50,23 @@ public final class UserManagementClientImpl implements UserManagementClient { return createUser(request, Optional.of(accessToken)); } - private Single getUser( + private Single getUser( @NonNull GetUserRequest request, @NonNull Optional maybeToken) { return CreateSingle.fromFuture( StubHelper.authenticating(this.serviceFutureStub, maybeToken) .getUser(request.toProto()), sequencerFactory) - .map(res -> User.fromProto(res.getUser())); + .map(GetUserResponse::fromProto); } @Override - public Single getUser(@NonNull GetUserRequest request) { + public Single getUser(@NonNull GetUserRequest request) { return getUser(request, Optional.empty()); } @Override - public Single getUser(@NonNull GetUserRequest request, @NonNull String accessToken) { + public Single getUser( + @NonNull GetUserRequest request, @NonNull String accessToken) { return getUser(request, Optional.of(accessToken)); } diff --git a/language-support/java/bindings/src/main/java/com/daml/ledger/javaapi/data/GetUserResponse.java b/language-support/java/bindings/src/main/java/com/daml/ledger/javaapi/data/GetUserResponse.java new file mode 100644 index 0000000000..6df4266715 --- /dev/null +++ b/language-support/java/bindings/src/main/java/com/daml/ledger/javaapi/data/GetUserResponse.java @@ -0,0 +1,48 @@ +// Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.daml.ledger.javaapi.data; + +import com.daml.ledger.api.v1.admin.UserManagementServiceOuterClass; +import java.util.Objects; + +public final class GetUserResponse { + + private final User user; + + public GetUserResponse(User user) { + this.user = user; + } + + public User getUser() { + return user; + } + + public static GetUserResponse fromProto(UserManagementServiceOuterClass.GetUserResponse proto) { + return new GetUserResponse(User.fromProto(proto.getUser())); + } + + public UserManagementServiceOuterClass.GetUserResponse toProto() { + return UserManagementServiceOuterClass.GetUserResponse.newBuilder() + .setUser(this.user.toProto()) + .build(); + } + + @Override + public String toString() { + return "GetUserResponse{" + "user=" + user + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GetUserResponse that = (GetUserResponse) o; + return user.equals(that.user); + } + + @Override + public int hashCode() { + return Objects.hash(user); + } +}