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 extends Document> 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();