Select Git revision
XtaClient.java
Jan Zickermann authored
XtaClient.java 2.89 KiB
package de.ozgcloud.xta.client;
import jakarta.validation.constraints.NotBlank;
import org.apache.commons.lang3.NotImplementedException;
import de.ozgcloud.xta.client.config.XtaClientConfig;
import de.ozgcloud.xta.client.core.WrappedXtaService;
import de.ozgcloud.xta.client.model.Identifier;
import de.ozgcloud.xta.client.model.XtaMessage;
import de.ozgcloud.xta.client.model.XtaMessageMetaDataListing;
import genv3.de.xoev.transport.xta.x211.PermissionDeniedException;
import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor(access = AccessLevel.MODULE)
@Builder(access = AccessLevel.MODULE)
@Getter(AccessLevel.MODULE)
public class XtaClient {
private final WrappedXtaService service;
private final XtaClientConfig config;
/**
* Fetch metadata of pending messages sent to the {@code xtaIdentifier}.
* The returned listing contains at most {@link de.ozgcloud.xta.client.config.XtaClientConfig#getMaxListItems() maxListItems} messages.
* Use the {@code requestId} to {@link #close(String) close} pending messages.
* To fetch the next messages, use {@link #getNextMessagesMetadata(String)}.
* Note that {@code xtaIdentifier} has to be configured as a {@link de.ozgcloud.xta.client.config.XtaClientConfig#getClientIdentifiers() clientIdentifiers}.
*
* @param xtaIdentifier the client identifier value to fetch messages for
* @return the listing result with metadata of messages
*/
public XtaMessageMetaDataListing getMessagesMetadata(@NotBlank String xtaIdentifier)
throws XTAWSTechnicalProblemException, PermissionDeniedException {
var clientIdentifier = deriveIdentifier(xtaIdentifier);
service.checkAccountActive(clientIdentifier);
return getStatusList(clientIdentifier);
}
/**
* Fetch metadata of pending messages sent to the {@code xtaIdentifier}.
* This method skips checks but otherwise behaves exactly as {@link #getMessagesMetadata(String)}.
*/
public XtaMessageMetaDataListing getNextMessagesMetadata(@NotBlank String xtaIdentifier)
throws XTAWSTechnicalProblemException, PermissionDeniedException {
return getStatusList(deriveIdentifier(xtaIdentifier));
}
private XtaMessageMetaDataListing getStatusList(Identifier clientIdentifier) throws XTAWSTechnicalProblemException, PermissionDeniedException {
return service.getStatusList(clientIdentifier, config.getMaxListItems());
}
Identifier deriveIdentifier(String xtaIdentifier) {
return config.getClientIdentifiers().stream()
.filter(id -> id.value().equals(xtaIdentifier))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Unknown identifier: " + xtaIdentifier));
}
public XtaMessage getMessage(String messageId) {
throw new NotImplementedException("");
}
public void close(@NotBlank String messageId) {
throw new NotImplementedException("");
}
}