RentalReservationClientRemoteApi.java
package io.extact.rms.client.api.adaptor.remote;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.List;
import jakarta.inject.Inject;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import io.extact.rms.client.api.RentalReservationClientApi;
import io.extact.rms.client.api.adaptor.remote.dto.AddRentalItemRequestDto;
import io.extact.rms.client.api.adaptor.remote.dto.AddReservationRequestDto;
import io.extact.rms.client.api.adaptor.remote.dto.AddUserAccountRequestDto;
import io.extact.rms.client.api.adaptor.remote.rest.RentalReservationRestClient;
import io.extact.rms.client.api.dto.RentalItemClientDto;
import io.extact.rms.client.api.dto.ReservationClientDto;
import io.extact.rms.client.api.dto.UserAccountClientDto;
import io.extact.rms.client.api.exception.BusinessFlowClientException;
import io.extact.rms.platform.extension.ConfiguableScoped;
@ConfiguableScoped
public class RentalReservationClientRemoteApi implements RentalReservationClientApi {
@Inject
@RestClient
private RentalReservationRestClient client;
@Override
public UserAccountClientDto authenticate(String loginId, String password) {
var paramMap = new HashMap<String, String>();
paramMap.put("loginId", loginId);
paramMap.put("password", password);
return client.authenticate(paramMap);
}
@Override
@SuppressWarnings("unchecked")
// RestClient does not allow type definition of List<? extends ReservationDto>. So forcibly cast.
public List<ReservationClientDto> findReservationByRentalItemAndStartDate(Integer targetRentalItemId, LocalDate targetDate) {
return (List<ReservationClientDto>)(List<?>)client.findReservation(targetRentalItemId, targetDate);
}
@Override
@SuppressWarnings("unchecked")
public List<ReservationClientDto> findReservationByReserverId(int reserverId) {
return (List<ReservationClientDto>)(List<?>)client.findReservationByReserverId(reserverId);
}
@Override
@SuppressWarnings("unchecked")
public List<ReservationClientDto> getOwnReservations() {
return (List<ReservationClientDto>)(List<?>)client.getOwnReservations();
}
@Override
@SuppressWarnings("unchecked")
public List<RentalItemClientDto> getAllRentalItems() {
return (List<RentalItemClientDto>)(List<?>)client.getAllRentalItems();
}
@Override
@SuppressWarnings("unchecked")
public List<UserAccountClientDto> getAllUserAccounts() {
return (List<UserAccountClientDto>)(List<?>)client.getAllUserAccounts();
}
@Override
public ReservationClientDto addReservation(ReservationClientDto addReservation) {
var requestDto = new AddReservationRequestDto(addReservation);
return client.addReservation(requestDto);
}
@Override
public RentalItemClientDto addRentalItem(RentalItemClientDto addRentalItem) {
var requestDto = new AddRentalItemRequestDto(addRentalItem);
return client.addRentalItem(requestDto);
}
@Override
public UserAccountClientDto addUserAccount(UserAccountClientDto addUserAccountDto) {
var requestDto = new AddUserAccountRequestDto(addUserAccountDto);
return client.addUserAccount(requestDto);
}
@Override
public void cancelReservation(int reservationId) throws BusinessFlowClientException {
client.cancelReservation(reservationId);
}
@Override
public UserAccountClientDto updateUserAccount(UserAccountClientDto updateUserAccountDto) {
return client.updateUserAccount(updateUserAccountDto);
}
}