diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 01ebc156..0393cabc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: steps: - uses: actions/checkout@v1 - name: Set release version - run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:11}"-SNAPSHOT") + run: echo "RELEASE_VERSION=${GITHUB_REF:11}-SNAPSHOT" >> $GITHUB_ENV - name: Build and deploy to Sonatype snapshot uses: digipost/action-maven-publish@1.1.0 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 29e92841..4ecf5560 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: - name: Check out Git repository uses: actions/checkout@v1 - name: Set release version - run: echo ::set-env name=RELEASE_VERSION::$(echo ${GITHUB_REF:10}) + run: echo "RELEASE_VERSION=${GITHUB_REF:10}" >> $GITHUB_ENV - name: Release to Central Repository uses: digipost/action-maven-publish@1.1.0 with: diff --git a/pom.xml b/pom.xml index dab76cd5..88a63db4 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 1.8 1.8 multiple-documents-SNAPSHOT - 1.7.29 + 1.7.30 @@ -38,21 +38,21 @@ org.springframework spring-framework-bom - 5.2.1.RELEASE + 5.3.3 pom import org.glassfish.jersey jersey-bom - 2.29.1 + 2.33 pom import org.junit junit-bom - 5.6.0-M1 + 5.7.0 pom import @@ -74,7 +74,7 @@ org.apache.httpcomponents httpclient - 4.5.10 + 4.5.13 commons-logging @@ -85,7 +85,7 @@ org.apache.httpcomponents httpcore - 4.4.12 + 4.4.14 jakarta.annotation @@ -118,13 +118,13 @@ commons-io commons-io - 2.6 + 2.8.0 test commons-codec commons-codec - 1.13 + 1.15 org.springframework @@ -137,12 +137,12 @@ org.springframework.ws spring-xml - 3.0.8.RELEASE + 3.0.10.RELEASE org.apache.commons commons-lang3 - 3.9 + 3.11 @@ -182,7 +182,7 @@ nl.jqno.equalsverifier equalsverifier - 3.1.10 + 3.5.1 test @@ -206,7 +206,7 @@ no.digipost digg - 0.22 + 0.25 test 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 2d179cbb..f7e97a7d 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 @@ -40,7 +40,7 @@ Object buildXmlManifest(DirectJob job, Sender sender) { .withSigners(signers) .withRequiredAuthentication(job.getRequiredAuthentication().map(AuthenticationLevel::getXmlEnumValue).orElse(null)) .withSender(new XMLSender().withOrganizationNumber(sender.getOrganizationNumber())) - .withDocuments(new XMLDirectDocument() + .withDocument(new XMLDirectDocument() .withTitle(document.getTitle()) .withDescription(document.getMessage()) .withHref(XMLHref.of(document.getFileName())) diff --git a/src/main/java/no/digipost/signature/client/asice/manifest/CreatePortalManifest.java b/src/main/java/no/digipost/signature/client/asice/manifest/CreatePortalManifest.java index 0ae91f63..889681c8 100644 --- a/src/main/java/no/digipost/signature/client/asice/manifest/CreatePortalManifest.java +++ b/src/main/java/no/digipost/signature/client/asice/manifest/CreatePortalManifest.java @@ -60,11 +60,12 @@ Object buildXmlManifest(PortalJob job, Sender sender) { .withSigners(xmlSigners) .withRequiredAuthentication(job.getRequiredAuthentication().map(AuthenticationLevel::getXmlEnumValue).orElse(null)) .withSender(new XMLSender().withOrganizationNumber(sender.getOrganizationNumber())) + .withTitle(job.getTitle()) + .withNonsensitiveTitle(job.getNonsensitiveTitle().orElse(null)) + .withDescription(job.getDescription().orElse(null)) .withDocuments(documents.stream().map(document -> new XMLPortalDocument() .withTitle(document.getTitle()) - .withNonsensitiveTitle(document.getNonsensitiveTitle()) - .withDescription(document.getMessage()) .withHref(XMLHref.of(document.getFileName())) .withMime(document.getMimeType()) ).collect(Collectors.toList()) diff --git a/src/main/java/no/digipost/signature/client/core/Document.java b/src/main/java/no/digipost/signature/client/core/Document.java index 3bdaf02d..1871a134 100644 --- a/src/main/java/no/digipost/signature/client/core/Document.java +++ b/src/main/java/no/digipost/signature/client/core/Document.java @@ -5,14 +5,12 @@ public abstract class Document implements ASiCEAttachable { private String title; - private String message; private String fileName; private byte[] document; private FileType fileType; - protected Document(final String title, final String message, final String fileName, final FileType fileType, final byte[] document) { + protected Document(final String title, final String fileName, final FileType fileType, final byte[] document) { this.title = title; - this.message = message; this.fileName = fileName; this.fileType = fileType; this.document = document; @@ -37,10 +35,6 @@ public String getTitle() { return title; } - public String getMessage() { - return message; - } - public enum FileType { PDF("application/pdf"), TXT("text/plain"); 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 2595e012..36caeb2e 100644 --- a/src/main/java/no/digipost/signature/client/direct/DirectDocument.java +++ b/src/main/java/no/digipost/signature/client/direct/DirectDocument.java @@ -5,14 +5,22 @@ import static no.digipost.signature.client.core.Document.FileType.PDF; public class DirectDocument extends Document { + + private final String message; + private DirectDocument(String title, String message, String fileName, FileType fileType, byte[] document) { - super(title, message, fileName, fileType, 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; diff --git a/src/main/java/no/digipost/signature/client/portal/PortalDocument.java b/src/main/java/no/digipost/signature/client/portal/PortalDocument.java index e7dfae3e..574899ba 100644 --- a/src/main/java/no/digipost/signature/client/portal/PortalDocument.java +++ b/src/main/java/no/digipost/signature/client/portal/PortalDocument.java @@ -5,15 +5,8 @@ import static no.digipost.signature.client.core.Document.FileType.PDF; public class PortalDocument extends Document { - private final String nonsensitiveTitle; - - private PortalDocument(String title, String nonsensitiveTitle, String message, String fileName, FileType fileType, byte[] document) { - super(title, message, fileName, fileType, document); - this.nonsensitiveTitle = nonsensitiveTitle; - } - - public String getNonsensitiveTitle() { - return nonsensitiveTitle; + private PortalDocument(String title, String fileName, FileType fileType, byte[] document) { + super(title, fileName, fileType, document); } public static Builder builder(final String title, final String fileName, final byte[] document) { @@ -23,10 +16,8 @@ public static Builder builder(final String title, final String fileName, final b public static class Builder { private String title; - private String nonsensitiveTitle; 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,23 +26,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 nonsensitiveTitle(String nonsensitiveTitle) { - this.nonsensitiveTitle = nonsensitiveTitle; - return this; - } - public Builder fileType(final FileType fileType) { this.fileType = fileType; return this; } public PortalDocument build() { - return new PortalDocument(title, nonsensitiveTitle, message, fileName, fileType, document); + return new PortalDocument(title, fileName, fileType, document); } } } diff --git a/src/main/java/no/digipost/signature/client/portal/PortalJob.java b/src/main/java/no/digipost/signature/client/portal/PortalJob.java index 3e5674cd..81738188 100644 --- a/src/main/java/no/digipost/signature/client/portal/PortalJob.java +++ b/src/main/java/no/digipost/signature/client/portal/PortalJob.java @@ -17,6 +17,9 @@ public class PortalJob implements SignatureJob { private final List signers; private final List documents; + private String title; + private Optional nonsensitiveTitle = Optional.empty(); + private Optional description = Optional.empty(); private String reference; private Optional activationTime = Optional.empty(); private Long availableSeconds; @@ -24,7 +27,8 @@ public class PortalJob implements SignatureJob { private Optional requiredAuthentication = Optional.empty(); private Optional identifierInSignedDocuments = Optional.empty(); - private PortalJob(List signers, List documents) { + private PortalJob(String title, List signers, List documents) { + this.title = title; this.signers = unmodifiableList(new ArrayList<>(signers)); this.documents = unmodifiableList(new ArrayList<>(documents)); } @@ -67,16 +71,28 @@ public Long getAvailableSeconds() { } - public static Builder builder(PortalDocument document, PortalSigner... signers) { - return builder(Collections.singletonList(document), Arrays.asList(signers)); + public static Builder builder(String title, PortalDocument document, PortalSigner... signers) { + return builder(title, Collections.singletonList(document), Arrays.asList(signers)); } - public static Builder builder(PortalDocument document, List signers) { - return builder(Collections.singletonList(document), signers); + public static Builder builder(String title, PortalDocument document, List signers) { + return builder(title, Collections.singletonList(document), signers); } - public static Builder builder(List documents, List signers) { - return new Builder(signers, documents); + public static Builder builder(String title, List documents, List signers) { + return new Builder(title, signers, documents); + } + + public String getTitle() { + return title; + } + + public Optional getNonsensitiveTitle() { + return nonsensitiveTitle; + } + + public Optional getDescription() { + return description; } public static class Builder implements JobCustomizations { @@ -84,8 +100,8 @@ public static class Builder implements JobCustomizations { private final PortalJob target; private boolean built = false; - private Builder(List signers, List documents) { - target = new PortalJob(signers, documents); + private Builder(String title, List signers, List documents) { + target = new PortalJob(title, signers, documents); } @Override @@ -127,6 +143,16 @@ public Builder availableFor(long duration, TimeUnit unit) { return this; } + public Builder withNonsensitiveTitle(String nonsensitiveTitle) { + target.nonsensitiveTitle = Optional.of(nonsensitiveTitle); + return this; + } + + public Builder withDescription(String description) { + target.description = Optional.of(description); + return this; + } + public PortalJob build() { if (built) throw new IllegalStateException("Can't build twice"); built = true; 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 92dafb3c..c38cd410 100644 --- a/src/test/java/no/digipost/signature/client/asice/CreateASiCETest.java +++ b/src/test/java/no/digipost/signature/client/asice/CreateASiCETest.java @@ -62,7 +62,6 @@ public static void initTempFolder() throws URISyntaxException, IOException { .build(); private static final PortalDocument PORTAL_DOCUMENT = PortalDocument.builder("Title", "file.txt", "hello".getBytes()) - .message("Message") .fileType(Document.FileType.TXT) .build(); @@ -78,8 +77,9 @@ public void create_direct_asice_and_write_to_disk() throws IOException { @Test public void create_portal_asice_and_write_to_disk() throws IOException { - PortalJob job = PortalJob.builder(PORTAL_DOCUMENT, PortalSigner.identifiedByPersonalIdentificationNumber("12345678910", NotificationsUsingLookup.EMAIL_ONLY).build()) + PortalJob job = PortalJob.builder("Job title", PORTAL_DOCUMENT, PortalSigner.identifiedByPersonalIdentificationNumber("12345678910", NotificationsUsingLookup.EMAIL_ONLY).build()) .withReference("portal job") + .withDescription("Message") .withActivationTime(clock.instant()) .availableFor(30, DAYS) .build(); diff --git a/src/test/java/no/digipost/signature/client/asice/manifest/CreatePortalManifestTest.java b/src/test/java/no/digipost/signature/client/asice/manifest/CreatePortalManifestTest.java index 79e513e0..5ec9c12c 100644 --- a/src/test/java/no/digipost/signature/client/asice/manifest/CreatePortalManifestTest.java +++ b/src/test/java/no/digipost/signature/client/asice/manifest/CreatePortalManifestTest.java @@ -26,13 +26,13 @@ void accept_valid_manifest() { CreatePortalManifest createManifest = new CreatePortalManifest(clock); PortalDocument document = PortalDocument.builder("Title", "file.txt", "hello".getBytes()) - .message("Message") .fileType(Document.FileType.TXT) .build(); - PortalJob job = PortalJob.builder(document, Collections.singletonList(PortalSigner.identifiedByPersonalIdentificationNumber("12345678910", NotificationsUsingLookup.EMAIL_ONLY).build())) + PortalJob job = PortalJob.builder("Job title", document, Collections.singletonList(PortalSigner.identifiedByPersonalIdentificationNumber("12345678910", NotificationsUsingLookup.EMAIL_ONLY).build())) .withActivationTime(clock.instant()) .availableFor(30, DAYS) + .withDescription("Message") .withIdentifierInSignedDocuments(IdentifierInSignedDocuments.PERSONAL_IDENTIFICATION_NUMBER_AND_NAME) .build(); assertThat(createManifest, where(__ -> __.createManifest(job, new Sender("123456789")), instanceOf(Manifest.class))); diff --git a/src/test/java/no/digipost/signature/client/docs/PortalClientUseCases.java b/src/test/java/no/digipost/signature/client/docs/PortalClientUseCases.java index 089f0500..d9fcd61e 100644 --- a/src/test/java/no/digipost/signature/client/docs/PortalClientUseCases.java +++ b/src/test/java/no/digipost/signature/client/docs/PortalClientUseCases.java @@ -27,9 +27,10 @@ static void create_and_send_signature_job() { PortalClient client = new PortalClient(clientConfiguration); byte[] documentBytes = null; // Loaded document bytes - PortalDocument document = PortalDocument.builder("Subject", "document.pdf", documentBytes).build(); + PortalDocument document = PortalDocument.builder("Document title", "document.pdf", documentBytes).build(); PortalJob portalJob = PortalJob.builder( + "Job title", document, PortalSigner.identifiedByPersonalIdentificationNumber("12345678910", NotificationsUsingLookup.EMAIL_ONLY).build(), @@ -95,9 +96,10 @@ static void specifying_queues() { Sender sender = new Sender("000000000", PollingQueue.of("CustomPollingQueue")); byte[] documentBytes = null; // Loaded document bytes - PortalDocument document = PortalDocument.builder("Subject", "document.pdf", documentBytes).build(); + PortalDocument document = PortalDocument.builder("Document title", "document.pdf", documentBytes).build(); PortalJob portalJob = PortalJob.builder( + "Job title", document, PortalSigner.identifiedByPersonalIdentificationNumber("12345678910", NotificationsUsingLookup.EMAIL_ONLY).build(),