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