diff --git a/README-CHANGES.xml b/README-CHANGES.xml index b43acba..3f216dc 100644 --- a/README-CHANGES.xml +++ b/README-CHANGES.xml @@ -24,14 +24,28 @@ - + - + + + + + + + + + + + + + + + diff --git a/com.io7m.xstructural.api/pom.xml b/com.io7m.xstructural.api/pom.xml index 52d10c7..927b242 100644 --- a/com.io7m.xstructural.api/pom.xml +++ b/com.io7m.xstructural.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 com.io7m.xstructural.api diff --git a/com.io7m.xstructural.cmdline/pom.xml b/com.io7m.xstructural.cmdline/pom.xml index f4cef1b..d4f8be3 100644 --- a/com.io7m.xstructural.cmdline/pom.xml +++ b/com.io7m.xstructural.cmdline/pom.xml @@ -9,7 +9,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 com.io7m.xstructural.cmdline diff --git a/com.io7m.xstructural.documentation/pom.xml b/com.io7m.xstructural.documentation/pom.xml index ac4538a..e160ec6 100644 --- a/com.io7m.xstructural.documentation/pom.xml +++ b/com.io7m.xstructural.documentation/pom.xml @@ -9,7 +9,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 com.io7m.xstructural.documentation diff --git a/com.io7m.xstructural.tests/pom.xml b/com.io7m.xstructural.tests/pom.xml index 0f1391e..dd5a7d5 100644 --- a/com.io7m.xstructural.tests/pom.xml +++ b/com.io7m.xstructural.tests/pom.xml @@ -8,7 +8,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 com.io7m.xstructural.tests diff --git a/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSCommandLineTest.java b/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSCommandLineTest.java index 912a5af..54ee4f1 100644 --- a/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSCommandLineTest.java +++ b/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSCommandLineTest.java @@ -991,4 +991,75 @@ public void testTransformXHTMLEPUBOKExample0_80() "EPUB file exists" ); } + + @Test + public void testTransformXHTMLEPUBOKExampleTwice_80() + throws Exception + { + XSTestDirectories.resourceOf( + XSCommandLineTest.class, + this.sourceDirectory, + "poppy.jpg" + ); + XSTestDirectories.resourceOf( + XSCommandLineTest.class, + this.sourceDirectory, + "missing.jpg" + ); + XSTestDirectories.resourceOf( + XSCommandLineTest.class, + this.sourceDirectory, + "woods.jpg" + ); + + { + final var main = new Main(new String[]{ + "epub", + "--sourceFile", + XSTestDirectories.resourceOf( + XSCommandLineTest.class, + this.sourceDirectory, + "example0_80.xml") + .toString(), + "--outputDirectory", + this.outputDirectory.toString(), + "--traceFile", + this.directory.resolve("trace.xml").toString(), + "--messagesFile", + this.directory.resolve("messages.log").toString(), + "--verbose", + "trace" + }); + + final var capture = + XSOutputCaptured.capture(main::run); + + Assertions.assertEquals(0, main.exitCode()); + } + + { + final var main = new Main(new String[]{ + "epub", + "--sourceFile", + XSTestDirectories.resourceOf( + XSCommandLineTest.class, + this.sourceDirectory, + "example0_80.xml") + .toString(), + "--outputDirectory", + this.outputDirectory.toString(), + "--traceFile", + this.directory.resolve("trace.xml").toString(), + "--messagesFile", + this.directory.resolve("messages.log").toString(), + "--verbose", + "trace" + }); + + final var capture = + XSOutputCaptured.capture(main::run); + + Assertions.assertEquals(0, main.exitCode()); + } + } } diff --git a/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSTestDirectories.java b/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSTestDirectories.java index 5a5cc32..100c4c3 100644 --- a/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSTestDirectories.java +++ b/com.io7m.xstructural.tests/src/test/java/com/io7m/xstructural/tests/XSTestDirectories.java @@ -24,6 +24,7 @@ import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; +import java.nio.file.StandardCopyOption; import java.util.UUID; public final class XSTestDirectories @@ -70,7 +71,7 @@ public static Path resourceOf( LOGGER.debug("copy {} {}", name, target); try (var stream = url.openStream()) { - Files.copy(stream, target); + Files.copy(stream, target, StandardCopyOption.REPLACE_EXISTING); } return target; } diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_70.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_70.xml index fbbd347..122a9f0 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_70.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_70.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_80.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_80.xml index 3cb05a6..0f2fcb7 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_80.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example0_80.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_70.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_70.xml index 65432e3..40cff89 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_70.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_70.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_80.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_80.xml index 41c9cc8..6ff5332 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_80.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example1_80.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_70.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_70.xml index 316de3c..f6d8c1a 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_70.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_70.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_80.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_80.xml index 6f143ec..6d8adb0 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_80.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example2_80.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_70.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_70.xml index 69e95ac..dbd0b1d 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_70.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_70.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_80.xml b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_80.xml index 2e81d78..cc6e954 100644 --- a/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_80.xml +++ b/com.io7m.xstructural.tests/src/test/resources/com/io7m/xstructural/tests/example3_80.xml @@ -1,10 +1,14 @@ + + + + A Contributor A Creator diff --git a/com.io7m.xstructural.vanilla/pom.xml b/com.io7m.xstructural.vanilla/pom.xml index db010b1..a457872 100644 --- a/com.io7m.xstructural.vanilla/pom.xml +++ b/com.io7m.xstructural.vanilla/pom.xml @@ -9,7 +9,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 com.io7m.xstructural.vanilla diff --git a/com.io7m.xstructural.vanilla/src/main/java/com/io7m/xstructural/vanilla/internal/XSEPUBCreator.java b/com.io7m.xstructural.vanilla/src/main/java/com/io7m/xstructural/vanilla/internal/XSEPUBCreator.java index dd0ed8d..ce7c740 100644 --- a/com.io7m.xstructural.vanilla/src/main/java/com/io7m/xstructural/vanilla/internal/XSEPUBCreator.java +++ b/com.io7m.xstructural.vanilla/src/main/java/com/io7m/xstructural/vanilla/internal/XSEPUBCreator.java @@ -44,6 +44,10 @@ import java.util.zip.ZipEntry; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +import static java.nio.file.StandardOpenOption.CREATE; +import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; +import static java.nio.file.StandardOpenOption.WRITE; /** * An EPUB creator. @@ -466,7 +470,7 @@ private void copyOEBPS() this.oebpsDirectory.resolve(file.getFileName().toString()); LOG.info("copy {} {}", file, outputFile); - Files.copy(file, outputFile); + Files.copy(file, outputFile, REPLACE_EXISTING); } } } @@ -488,7 +492,11 @@ private void writeContainerFile() throws IOException { try (var stream = resource("container.xml")) { - Files.copy(stream, this.metaDirectory.resolve("container.xml")); + Files.copy( + stream, + this.metaDirectory.resolve("container.xml"), + REPLACE_EXISTING + ); } } @@ -498,7 +506,10 @@ private void writeMimetypeFile() Files.writeString( this.epubDirectory.resolve("mimetype"), "application/epub+zip", - UTF_8 + UTF_8, + WRITE, + CREATE, + TRUNCATE_EXISTING ); } diff --git a/com.io7m.xstructural.xml/pom.xml b/com.io7m.xstructural.xml/pom.xml index e301e42..574fc9c 100644 --- a/com.io7m.xstructural.xml/pom.xml +++ b/com.io7m.xstructural.xml/pom.xml @@ -6,7 +6,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 com.io7m.xstructural.xml diff --git a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-multi.xsl b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-multi.xsl index 949e363..ce9af1b 100644 --- a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-multi.xsl +++ b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-multi.xsl @@ -37,6 +37,8 @@ select="concat('Unexpectedly reached catch-all template: ', namespace-uri(.), ':', node-name(.))"/> + + diff --git a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-single.xsl b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-single.xsl index 0798ea6..96095d7 100644 --- a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-single.xsl +++ b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s7/xstructural7-web-single.xsl @@ -36,6 +36,8 @@ select="concat('Unexpectedly reached catch-all template: ', namespace-uri(.), ':', node-name(.))"/> + + diff --git a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-multi.xsl b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-multi.xsl index f702b98..3e260c0 100644 --- a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-multi.xsl +++ b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-multi.xsl @@ -37,6 +37,8 @@ select="concat('Unexpectedly reached catch-all template: ', namespace-uri(.), ':', node-name(.))"/> + + diff --git a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-single.xsl b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-single.xsl index a880400..8f6af26 100644 --- a/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-single.xsl +++ b/com.io7m.xstructural.xml/src/main/xsl/com/io7m/xstructural/xml/s8/xstructural8-web-single.xsl @@ -36,6 +36,8 @@ select="concat('Unexpectedly reached catch-all template: ', namespace-uri(.), ':', node-name(.))"/> + + diff --git a/pom.xml b/pom.xml index c097406..e01b6af 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.io7m.xstructural com.io7m.xstructural - 1.3.0 + 1.4.0 pom Structural document format @@ -29,7 +29,7 @@ 2.8.8 - 1.2.0 + 1.3.0 5.7.0