diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClient.java b/src/main/java/de/ozgcloud/xta/client/XtaClient.java index c5c7492847e4b9d7006b30af6ac935906f5b05f7..afe601dfa9dc4b6c13c65048d9bf823d6b819ba3 100644 --- a/src/main/java/de/ozgcloud/xta/client/XtaClient.java +++ b/src/main/java/de/ozgcloud/xta/client/XtaClient.java @@ -84,9 +84,9 @@ public class XtaClient { * </p> * * @param processMessage The consumer to process each fetched message. - * @return The transport reports for all fetched/processed messages. A message which has not been closed has an - * {@link XtaMessageStatus#OPEN OPEN} status. If a message has been closed, the status is either {@link XtaMessageStatus#GREEN GREEN}, - * {@link XtaMessageStatus#YELLOW YELLOW} or {@link XtaMessageStatus#RED RED}. + * @return The transport reports for all fetched/processed messages. A message which has not been closed has an {@link XtaMessageStatus#OPEN OPEN} + * status. If a message has been closed, the status is either {@link XtaMessageStatus#GREEN GREEN}, {@link XtaMessageStatus#YELLOW YELLOW} or + * {@link XtaMessageStatus#RED RED}. * @throws XtaClientException If a technical problem occurs while fetching messages. */ public List<XtaTransportReport> fetchMessages(@NotNull Consumer<XtaMessage> processMessage) throws XtaClientException { @@ -200,7 +200,8 @@ public class XtaClient { * reader. If both checks pass, sends the message to the reader. Finally, returns the transport report for the sent message. * </p> * <p> - * <b>Note:</b> message size and id are set by the server, and thus may initially be null. + * <b>Note:</b> message size and id are set by the server, and thus may initially be null. This applies to the message metadata as well as + * to the message and attachment files. * </p> * * @param messageWithoutMessageId The message to send without id and size. diff --git a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java index a98b2ee4ab8c128ebd2dbe51f7a2b1f691575687..ffc3e923295669675e024795d70726d2cc2aec57 100644 --- a/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java +++ b/src/main/java/de/ozgcloud/xta/client/config/XtaClientConfig.java @@ -32,6 +32,9 @@ public class XtaClientConfig { * <p> * Usually, in order to use the client identifiers, an according client certificate needs to be configured. * </p> + * <p> + * <b>Note:</b> The identifier type is assumed to be {@code xoev}. + * </p> */ @Builder.Default private final List<@Valid XtaIdentifier> clientIdentifiers = emptyList(); diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java b/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java index 05c1949899aef4596294624f72055859fd210620..17fc6b5fbcf9dec31c45aaa18793b23e97f5a655 100644 --- a/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java +++ b/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java @@ -22,6 +22,30 @@ import de.ozgcloud.xta.client.xdomea.reader.ZipFileEntryReader; import lombok.Builder; import lombok.RequiredArgsConstructor; +/** + * Creator of {@link XtaMessage}s for Xdomea. + * + * <p> + * The XdomeaXtaMessageCreator is used to create an {@link XtaMessage} for an Xdomea zip file. + * The resulting message may be send via the {@link de.ozgcloud.xta.client.XtaClient XtaClient}. + * </p> + * + * + * Example: + * <pre> + * var xtaMessageCreator = XdomeaXtaMessageCreator.createInstance(); + * var zipFileName = "d5be7468-e620-4126-a40e-61a7f9b46345_Geschaeftsgang.Geschaeftsgang.0201.zip"; + * var zipFileContentDataHandler = new DataHandler(new FileDataSource("/path/to/" + zipFileName)); + * var xdomeaXtaFile = XtaFile.builder() + * .name(zipFileName) + * .content(zipFileContentDataHandler) + * .contentType("application/zip") + * .build(); + * var xtaMessage = xtaMessageCreator.createMessage(xdomeaXtaFile); + * + * XtaClient.from(...).sendMessage(xtaMessage); + * </pre> + */ @Builder @RequiredArgsConstructor public class XdomeaXtaMessageCreator { @@ -36,6 +60,21 @@ public class XdomeaXtaMessageCreator { return XdomeaXtaMessageCreatorFactory.createInstance().create(); } + /** + * Creates an {@link XtaMessage} from the given xdomea zip file. + * + * <p> + * The zip file has to follow the XTA/Xdomea generic transport specification. + * According to the specification, only the Xdomea messages of type 0201, 0401 and 0402 are supported. + * </p> + * + * <p> + * <small>The XTA/Xdomea generic transport specification is unofficially available as <i>"Transportfestlegungen Generischer Antragsdienst.pdf"</i>.</small> + * </p> + * @param xdomeaZipFile the xdomea zip file + * @return the xta message with metadata derived from the xdomea zip file + * @throws XtaClientException if no valid metadata could be derived from the xdomea zip file. + */ public XtaMessage createMessage(XtaFile xdomeaZipFile) throws XtaClientException { return XtaMessage.builder() .metaData(deriveValidMetaData(xdomeaZipFile)) diff --git a/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java b/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java index 8fa45ece8e7128c5eae684261ad4fd84c89faaee..a4207e63d8e1969f0ac0465fdf64cb78fb91c1ed 100644 --- a/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java +++ b/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java @@ -17,6 +17,7 @@ import java.util.function.Supplier; import java.util.regex.Pattern; import jakarta.activation.DataHandler; +import jakarta.activation.FileDataSource; import jakarta.annotation.Nullable; import jakarta.mail.util.ByteArrayDataSource; import jakarta.validation.constraints.NotBlank; @@ -179,7 +180,7 @@ public class XtaMessageExampleLoader { } private static DataHandler createContentDataHandler(byte[] data) { - return new DataHandler(new ByteArrayDataSource(data, "application/octet-stream")); + return new DataHandler(new FileDataSource("application/octet-stream")); } private static byte[] readBytesFromResource(String path) { diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java index 7ff3ffd6754a4682db3cf3c660134f77127a6ee0..84c3eea862fd6197ddae096f5f2171cb61f31cd2 100644 --- a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java +++ b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorITCase.java @@ -22,7 +22,7 @@ class XdomeaXtaMessageCreatorITCase { @BeforeEach void setup() { - creator = XdomeaXtaMessageCreatorFactory.createInstance().create(); + creator = XdomeaXtaMessageCreator.createInstance(); } @DisplayName("create message")