Skip to content
Snippets Groups Projects
Select Git revision
  • 5f9304bff7197157f9e6b3c7dd1cd73f8c745d98
  • main default protected
  • KOP-3351-open-source-files
  • KOP-3064-Test-Nachrichten-Fuer-Enaio-DMS
  • OZG-8085-ci-components-poc
  • KOP-3126-Reproduce-Bug
  • 0.2.2
  • 0.2.1
  • 0.2.0
9 results

XtaClient.java

Blame
  • 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("");
    	}
    }