diff --git a/pom.xml b/pom.xml index 46a72d08..51701559 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 1.8 1.8 set_with_-Dproject.previousVersion=X.Y - 2.8-RC1 + 2.8-RC2 1.7.30 diff --git a/src/main/java/no/digipost/signature/client/asice/manifest/CreateDirectManifest.java b/src/main/java/no/digipost/signature/client/asice/manifest/CreateDirectManifest.java index f7e97a7d..130b9578 100644 --- a/src/main/java/no/digipost/signature/client/asice/manifest/CreateDirectManifest.java +++ b/src/main/java/no/digipost/signature/client/asice/manifest/CreateDirectManifest.java @@ -16,12 +16,13 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class CreateDirectManifest extends ManifestCreator { @Override Object buildXmlManifest(DirectJob job, Sender sender) { - DirectDocument document = job.getDocument(); + List documents = job.getDocuments(); List signers = new ArrayList<>(); for (DirectSigner signer : job.getSigners()) { @@ -40,11 +41,14 @@ Object buildXmlManifest(DirectJob job, Sender sender) { .withSigners(signers) .withRequiredAuthentication(job.getRequiredAuthentication().map(AuthenticationLevel::getXmlEnumValue).orElse(null)) .withSender(new XMLSender().withOrganizationNumber(sender.getOrganizationNumber())) - .withDocument(new XMLDirectDocument() - .withTitle(document.getTitle()) - .withDescription(document.getMessage()) - .withHref(XMLHref.of(document.getFileName())) - .withMime(document.getMimeType()) + .withTitle(job.getTitle()) + .withDescription(job.getDescription().orElse(null)) + .withDocuments(documents.stream().map(document -> + new XMLDirectDocument() + .withTitle(document.getTitle()) + .withHref(XMLHref.of(document.getFileName())) + .withMime(document.getMimeType()) + ).collect(Collectors.toList()) ) .withIdentifierInSignedDocuments(job.getIdentifierInSignedDocuments().map(IdentifierInSignedDocuments::getXmlEnumValue).orElse(null)) ; diff --git a/src/main/java/no/digipost/signature/client/direct/DirectDocument.java b/src/main/java/no/digipost/signature/client/direct/DirectDocument.java index 36caeb2e..110e72e6 100644 --- a/src/main/java/no/digipost/signature/client/direct/DirectDocument.java +++ b/src/main/java/no/digipost/signature/client/direct/DirectDocument.java @@ -6,27 +6,19 @@ public class DirectDocument extends Document { - private final String message; - - private DirectDocument(String title, String message, String fileName, FileType fileType, byte[] document) { + private DirectDocument(String title, String fileName, FileType fileType, byte[] document) { super(title, fileName, fileType, document); - this.message = message; } public static Builder builder(final String title, final String fileName, final byte[] document) { return new Builder(title, fileName, document); } - public String getMessage() { - return message; - } - public static class Builder { private String title; private String fileName; private byte[] document; - private String message; private FileType fileType = PDF; public Builder(final String title, final String fileName, final byte[] document) { @@ -35,18 +27,13 @@ public Builder(final String title, final String fileName, final byte[] document) this.document = document; } - public Builder message(String message) { - this.message = message; - return this; - } - public Builder fileType(final FileType fileType) { this.fileType = fileType; return this; } public DirectDocument build() { - return new DirectDocument(title, message, fileName, fileType, document); + return new DirectDocument(title, fileName, fileType, document); } } } diff --git a/src/main/java/no/digipost/signature/client/direct/DirectJob.java b/src/main/java/no/digipost/signature/client/direct/DirectJob.java index 7227f746..7de492b8 100644 --- a/src/main/java/no/digipost/signature/client/direct/DirectJob.java +++ b/src/main/java/no/digipost/signature/client/direct/DirectJob.java @@ -12,7 +12,9 @@ public class DirectJob implements SignatureJob, WithExitUrls { private String reference; private List signers; - private DirectDocument document; + private List documents; + private String title; + private Optional description = Optional.empty(); private URI completionUrl; private URI rejectionUrl; private URI errorUrl; @@ -21,9 +23,10 @@ public class DirectJob implements SignatureJob, WithExitUrls { private Optional requiredAuthentication = Optional.empty(); private Optional identifierInSignedDocuments = Optional.empty(); - private DirectJob(List signers, DirectDocument document, URI completionUrl, URI rejectionUrl, URI errorUrl) { + private DirectJob(String title, List signers, List documents, URI completionUrl, URI rejectionUrl, URI errorUrl) { + this.title = title; this.signers = unmodifiableList(new ArrayList<>(signers)); - this.document = document; + this.documents = unmodifiableList(new ArrayList<>(documents)); this.completionUrl = completionUrl; this.rejectionUrl = rejectionUrl; this.errorUrl = errorUrl; @@ -35,13 +38,8 @@ public String getReference() { } @Override - public DirectDocument getDocument() { - return document; - } - - @Override - public List getDocuments() { - return unmodifiableList(Collections.singletonList(document)); + public List getDocuments() { + return documents; } @Override @@ -93,13 +91,12 @@ public Optional getStatusRetrievalMethod() { * @param signers The {@link DirectSigner DirectSigners} of the document. * * @return a builder to further customize the job - * @see DirectJob#builder(DirectDocument, WithExitUrls, List) + * @see DirectJob#builder(String, DirectDocument, WithExitUrls, List) */ - public static Builder builder(DirectDocument document, WithExitUrls hasExitUrls, DirectSigner... signers) { - return builder(document, hasExitUrls, Arrays.asList(signers)); + public static Builder builder(String title, DirectDocument document, WithExitUrls hasExitUrls, DirectSigner... signers) { + return builder(title, Collections.singletonList(document), hasExitUrls, Arrays.asList(signers)); } - /** * Create a new DirectJob. * @@ -110,19 +107,36 @@ public static Builder builder(DirectDocument document, WithExitUrls hasExitUrls, * @param signers The {@link DirectSigner DirectSigners} of the document. * * @return a builder to further customize the job - * @see DirectJob#builder(DirectDocument, WithExitUrls, DirectSigner...) + * @see DirectJob#builder(String, DirectDocument, WithExitUrls, DirectSigner...) */ - public static Builder builder(DirectDocument document, WithExitUrls hasExitUrls, List signers) { - return new Builder(signers, document, hasExitUrls.getCompletionUrl(), hasExitUrls.getRejectionUrl(), hasExitUrls.getErrorUrl()); + public static Builder builder(String title, DirectDocument document, WithExitUrls hasExitUrls, List signers) { + return builder(title, Collections.singletonList(document), hasExitUrls, signers); + } + + public static Builder builder(String title, List documents, WithExitUrls hasExitUrls, DirectSigner... signers) { + return builder(title, documents, hasExitUrls, Arrays.asList(signers)); + } + + public static Builder builder(String title, List documents, WithExitUrls hasExitUrls, List signers) { + return new Builder(title, signers, documents, hasExitUrls.getCompletionUrl(), hasExitUrls.getRejectionUrl(), hasExitUrls.getErrorUrl()); } + public String getTitle() { + return title; + } + + public Optional getDescription() { + return description; + } + + public static class Builder implements JobCustomizations { private final DirectJob target; private boolean built = false; - private Builder(List signers, DirectDocument document, URI completionUrl, URI rejectionUrl, URI errorUrl) { - target = new DirectJob(signers, document, completionUrl, rejectionUrl, errorUrl); + private Builder(String title, List signers, List documents, URI completionUrl, URI rejectionUrl, URI errorUrl) { + target = new DirectJob(title, signers, documents, completionUrl, rejectionUrl, errorUrl); } @Override @@ -130,6 +144,11 @@ public Builder withReference(UUID uuid) { return withReference(uuid.toString()); } + public Builder withDescription(String description) { + target.description = Optional.of(description); + return this; + } + @Override public Builder withReference(String reference) { target.reference = reference; diff --git a/src/test/java/no/digipost/signature/client/asice/CreateASiCETest.java b/src/test/java/no/digipost/signature/client/asice/CreateASiCETest.java index c38cd410..0bf93b12 100644 --- a/src/test/java/no/digipost/signature/client/asice/CreateASiCETest.java +++ b/src/test/java/no/digipost/signature/client/asice/CreateASiCETest.java @@ -56,19 +56,18 @@ public static void initTempFolder() throws URISyntaxException, IOException { private static Path dumpFolder; - private static final DirectDocument DIRECT_DOCUMENT = DirectDocument.builder("Title", "file.txt", "hello".getBytes()) - .message("Message") + private static final DirectDocument DIRECT_DOCUMENT = DirectDocument.builder("Document title", "file.txt", "hello".getBytes()) .fileType(Document.FileType.TXT) .build(); - private static final PortalDocument PORTAL_DOCUMENT = PortalDocument.builder("Title", "file.txt", "hello".getBytes()) + private static final PortalDocument PORTAL_DOCUMENT = PortalDocument.builder("Document title", "file.txt", "hello".getBytes()) .fileType(Document.FileType.TXT) .build(); @Test public void create_direct_asice_and_write_to_disk() throws IOException { - DirectJob job = DirectJob.builder(DIRECT_DOCUMENT, singleExitUrl(URI.create("https://job.well.done.org")), DirectSigner.withPersonalIdentificationNumber("12345678910").build()) + DirectJob job = DirectJob.builder("Job title", DIRECT_DOCUMENT, singleExitUrl(URI.create("https://job.well.done.org")), DirectSigner.withPersonalIdentificationNumber("12345678910").build()) .withReference("direct job") .build(); diff --git a/src/test/java/no/digipost/signature/client/asice/manifest/CreateDirectManifestTest.java b/src/test/java/no/digipost/signature/client/asice/manifest/CreateDirectManifestTest.java index c701c7c6..139041f4 100644 --- a/src/test/java/no/digipost/signature/client/asice/manifest/CreateDirectManifestTest.java +++ b/src/test/java/no/digipost/signature/client/asice/manifest/CreateDirectManifestTest.java @@ -22,11 +22,11 @@ void accept_valid_manifest() { CreateDirectManifest createManifest = new CreateDirectManifest(); DirectDocument document = DirectDocument.builder("Title", "file.txt", "hello".getBytes()) - .message("Message") .fileType(Document.FileType.TXT) .build(); DirectJob job = DirectJob.builder( + "Job title", document, ExitUrls.of(URI.create("http://localhost/signed"), URI.create("http://localhost/canceled"), URI.create("http://localhost/failed")), DirectSigner.withPersonalIdentificationNumber("12345678910").build()) diff --git a/src/test/java/no/digipost/signature/client/docs/DirectClientUseCases.java b/src/test/java/no/digipost/signature/client/docs/DirectClientUseCases.java index 3a48f113..adc7e3a1 100644 --- a/src/test/java/no/digipost/signature/client/docs/DirectClientUseCases.java +++ b/src/test/java/no/digipost/signature/client/docs/DirectClientUseCases.java @@ -32,7 +32,7 @@ static void create_and_send_signature_job() { DirectClient client = new DirectClient(clientConfiguration); byte[] documentBytes = null; // Loaded document bytes - DirectDocument document = DirectDocument.builder("Subject", "document.pdf", documentBytes).build(); + DirectDocument document = DirectDocument.builder("Document title", "document.pdf", documentBytes).build(); ExitUrls exitUrls = ExitUrls.of( URI.create("http://sender.org/onCompletion"), @@ -41,7 +41,7 @@ static void create_and_send_signature_job() { ); DirectSigner signer = DirectSigner.withPersonalIdentificationNumber("12345678910").build(); - DirectJob directJob = DirectJob.builder(document, exitUrls, signer).build(); + DirectJob directJob = DirectJob.builder("Job title", document, exitUrls, signer).build(); DirectJobResponse directJobResponse = client.create(directJob); } @@ -102,7 +102,7 @@ static void get_signature_job_status() { static void create_job_and_status_by_polling() { DirectClient client = null; // As initialized earlier - DirectJob directJob = DirectJob.builder(document, exitUrls, signer) + DirectJob directJob = DirectJob.builder("Job title", document, exitUrls, signer) .retrieveStatusBy(StatusRetrievalMethod.POLLING) .build(); @@ -148,7 +148,7 @@ static void specifying_queues() { DirectClient client = null; // As initialized earlier Sender sender = new Sender("000000000", PollingQueue.of("CustomPollingQueue")); - DirectJob directJob = DirectJob.builder(document, exitUrls, signer) + DirectJob directJob = DirectJob.builder("Job title", document, exitUrls, signer) .retrieveStatusBy(StatusRetrievalMethod.POLLING).withSender(sender) .build();