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
This commit is contained in:
Stefano Baghino 2022-03-14 16:31:17 +01:00 committed by GitHub
parent 2ce4223b97
commit e1d677c3ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 55 additions and 6 deletions

View File

@ -14,9 +14,9 @@ public interface UserManagementClient {
Single<CreateUserResponse> createUser(@NonNull CreateUserRequest request, String accessToken);
Single<User> getUser(@NonNull GetUserRequest request);
Single<GetUserResponse> getUser(@NonNull GetUserRequest request);
Single<User> getUser(@NonNull GetUserRequest request, String accessToken);
Single<GetUserResponse> getUser(@NonNull GetUserRequest request, String accessToken);
Single<DeleteUserResponse> deleteUser(@NonNull DeleteUserRequest request);

View File

@ -50,22 +50,23 @@ public final class UserManagementClientImpl implements UserManagementClient {
return createUser(request, Optional.of(accessToken));
}
private Single<User> getUser(
private Single<GetUserResponse> getUser(
@NonNull GetUserRequest request, @NonNull Optional<String> 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<User> getUser(@NonNull GetUserRequest request) {
public Single<GetUserResponse> getUser(@NonNull GetUserRequest request) {
return getUser(request, Optional.empty());
}
@Override
public Single<User> getUser(@NonNull GetUserRequest request, @NonNull String accessToken) {
public Single<GetUserResponse> getUser(
@NonNull GetUserRequest request, @NonNull String accessToken) {
return getUser(request, Optional.of(accessToken));
}

View File

@ -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);
}
}