Skip to content

Commit

Permalink
Merge branch 'hotfix/4.2.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
jelovirt committed Mar 24, 2024
2 parents ee4d6ac + d3389ca commit 2309e5d
Show file tree
Hide file tree
Showing 29 changed files with 350 additions and 52 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ apply plugin: 'signing'
group = 'org.dita-ot'
archivesBaseName = 'dost'
/** Semver version number */
version = '4.2.1'
version = '4.2.2'

description = """DITA Open Toolkit"""

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/dita/dost/ant/UriBasenameTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/
package org.dita.dost.ant;

import static org.dita.dost.util.Constants.*;
import static org.dita.dost.util.Constants.URI_SEPARATOR;

import java.net.URI;
import org.apache.tools.ant.BuildException;
Expand Down Expand Up @@ -75,7 +75,7 @@ public void execute() throws BuildException {
if (file == null) {
throw new BuildException("file attribute required", getLocation());
}
String value = getName(file.toString());
String value = getName(file.getPath());
if (suffix != null && value.endsWith(suffix)) {
// if the suffix does not starts with a '.' and the
// char preceding the suffix is a '.', we assume the user
Expand Down
13 changes: 9 additions & 4 deletions src/main/java/org/dita/dost/invoker/Arguments.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.io.File;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
Expand Down Expand Up @@ -297,10 +298,14 @@ static class FileOrUriArgument extends Argument {

@Override
String getValue(final String value) {
final Path f = Paths.get(value).toAbsolutePath().normalize();
if (Files.exists(f)) {
return f.toString();
} else {
try {
final Path f = Paths.get(value).toAbsolutePath().normalize();
if (Files.exists(f)) {
return f.toString();
} else {
return value;
}
} catch (InvalidPathException e) {
return value;
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/dita/dost/invoker/DefaultLogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -386,8 +386,8 @@ public void messageLogged(final BuildEvent event) {
message.append(event.getMessage());
}
final Throwable ex = event.getException();
if (Project.MSG_DEBUG <= msgOutputLevel && ex != null) {
message.append(StringUtils.getStackTrace(ex));
if (Project.MSG_VERBOSE <= msgOutputLevel && ex != null) {
message.append('\n').append(StringUtils.getStackTrace(ex));
}

final String msg = message.toString();
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/dita/dost/log/DITAOTAntLogger.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ public void setTarget(final Target target) {
@Override
public void log(final String msg, final Throwable t, final int level) {
if (task != null) {
project.log(task, msg, level);
project.log(task, msg, t, level);
} else if (target != null) {
project.log(target, msg, level);
project.log(target, msg, t, level);
} else {
project.log(msg, level);
project.log(msg, t, level);
}
}
}
5 changes: 3 additions & 2 deletions src/main/java/org/dita/dost/module/BranchFilterModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,10 @@ private void rewriteDuplicates(final Element root) {
attr.getOwnerElement().setAttribute(BRANCH_COPY_TO, gen);
}

final URI dstUri = map.resolve(gen);
final URI dstUri = stripFragment(map.resolve(gen));
if (dstUri != null) {
final FileInfo hrefFileInfo = job.getFileInfo(currentFile.resolve(attr.getValue()));
final URI absTarget = stripFragment(currentFile.resolve(attr.getValue()));
final FileInfo hrefFileInfo = job.getFileInfo(absTarget);
if (hrefFileInfo != null) {
final URI newResult = addSuffix(hrefFileInfo.result, suffix);
final FileInfo.Builder dstBuilder = new FileInfo.Builder(hrefFileInfo).uri(dstUri).result(newResult);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,10 @@ private void rewriteDuplicates(final Element root) {
attr.getOwnerElement().setAttribute(BRANCH_COPY_TO, gen);
}

final URI dstUri = map.resolve(gen);
final URI dstUri = stripFragment(map.resolve(gen));
if (dstUri != null) {
final FileInfo hrefFileInfo = job.getFileInfo(currentFile.resolve(attr.getValue()));
final URI absTarget = stripFragment(currentFile.resolve(attr.getValue()));
final FileInfo hrefFileInfo = job.getFileInfo(absTarget);
if (hrefFileInfo != null) {
final URI newResult = addSuffix(hrefFileInfo.result, suffix);
final FileInfo.Builder dstBuilder = new FileInfo.Builder(hrefFileInfo).uri(dstUri).result(newResult);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import static java.util.Collections.singletonList;
import static org.dita.dost.module.filter.MapBranchFilterModule.BRANCH_COPY_TO;
import static org.dita.dost.util.Constants.*;
import static org.dita.dost.util.URLUtils.stripFragment;
import static org.dita.dost.util.XMLUtils.getChildElements;

import java.io.File;
Expand Down Expand Up @@ -43,7 +44,7 @@
*
* @since 2.5
*/
public final class TopicBranchFilterModule extends AbstractBranchFilterModule {
public class TopicBranchFilterModule extends AbstractBranchFilterModule {

private static final String SKIP_FILTER = "skip-filter";

Expand Down Expand Up @@ -151,11 +152,11 @@ private void generateCopies(
} catch (final DITAOTException e) {
logger.error("Failed to filter " + srcAbsUri + " to " + dstAbsUri + ": " + e.getMessage(), e);
}
topicref.setAttribute(ATTRIBUTE_NAME_HREF, copyTo);
topicref.removeAttribute(BRANCH_COPY_TO);
// disable filtering again
topicref.setAttribute(SKIP_FILTER, Boolean.TRUE.toString());
}
topicref.setAttribute(ATTRIBUTE_NAME_HREF, copyTo);
topicref.removeAttribute(BRANCH_COPY_TO);
// disable filtering again
topicref.setAttribute(SKIP_FILTER, Boolean.TRUE.toString());
}
for (final Element child : getChildElements(topicref, MAP_TOPICREF)) {
if (DITAVAREF_D_DITAVALREF.matches(child)) {
Expand All @@ -175,7 +176,7 @@ private void filterTopics(

final String href = topicref.getAttribute(ATTRIBUTE_NAME_HREF);
final Attr skipFilter = topicref.getAttributeNode(SKIP_FILTER);
final URI srcAbsUri = job.tempDirURI.resolve(map.resolve(href));
final URI srcAbsUri = stripFragment(job.tempDirURI.resolve(map.resolve(href)));
if (
!fs.isEmpty() &&
skipFilter == null &&
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/org/dita/dost/store/AbstractStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import net.sf.saxon.s9api.XsltTransformer;
import org.dita.dost.exception.DITAOTException;
Expand Down Expand Up @@ -101,6 +100,9 @@ public void transform(URI src, final List<XMLFilter> filters) throws DITAOTExcep
// throw new IllegalArgumentException("Only file URI scheme supported: " + input);
// }
final URI srcFile = setFragment(src, null);
if (!exists(srcFile)) {
return;
}
final URI dst = toURI(srcFile.toString() + FILE_EXTENSION_TEMP).normalize();
transformURI(srcFile, dst, filters);
try {
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/org/dita/dost/store/CacheStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,9 @@ public ContentHandler getContentHandler(final URI outputFile) throws SaxonApiExc
public void transform(final URI src, final ContentHandler dst) throws DITAOTException {
final URI f = src.normalize();
if (isTempFile(f)) {
if (!exists(f)) {
return;
}
if (cache.containsKey(f)) {
try {
final Source source = getSource(src);
Expand All @@ -338,6 +341,9 @@ public void transform(final URI src, final ContentHandler dst) throws DITAOTExce
public void transform(final URI input, final List<XMLFilter> filters) throws DITAOTException {
final URI src = input.normalize();
if (isTempFile(src)) {
if (!exists(src)) {
return;
}
try {
final Source source = getSource(src);
final ContentHandler serializer = getContentHandler(src);
Expand All @@ -356,6 +362,9 @@ public void transform(final URI input, final List<XMLFilter> filters) throws DIT
@Override
void transformURI(final URI input, final URI output, final List<XMLFilter> filters) throws DITAOTException {
if (isTempFile(input)) {
if (!exists(input)) {
return;
}
try {
ContentHandler dst = getContentHandler(output);
ContentHandler pipe = getPipe(filters, dst);
Expand All @@ -381,6 +390,9 @@ public void transform(final URI input, final URI output, final XsltTransformer t

@Override
public void transform(final URI src, final XsltTransformer transformer) throws DITAOTException {
if (!exists(src)) {
return;
}
final boolean useTmpBuf = !isTempFile(src.normalize());
final URI dst = useTmpBuf ? toURI(src + FILE_EXTENSION_TEMP).normalize() : src;
Destination result = null;
Expand Down Expand Up @@ -415,6 +427,9 @@ public void transform(final URI src, final XsltTransformer transformer) throws D

@Override
void transformUri(final URI src, final URI dst, final XsltTransformer transformer) throws DITAOTException {
if (!exists(src)) {
return;
}
Destination result = null;
try {
final Source source = getSource(src);
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/org/dita/dost/store/StreamStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,9 @@ public void transform(final URI input, final ContentHandler contentHandler) thro

@Override
void transformURI(final URI input, final URI output, final List<XMLFilter> filters) throws DITAOTException {
if (!exists(input)) {
return;
}
Serializer result = null;
try {
XMLReader reader = xmlUtils.getXMLReader();
Expand Down Expand Up @@ -215,6 +218,9 @@ public void transform(final URI input, final URI output, final XsltTransformer t

@Override
public void transform(final URI src, final XsltTransformer transformer) throws DITAOTException {
if (!exists(src)) {
return;
}
final URI dst = toURI(src.toString() + FILE_EXTENSION_TEMP).normalize();
transformUri(src, dst, transformer);
try {
Expand All @@ -226,6 +232,9 @@ public void transform(final URI src, final XsltTransformer transformer) throws D

@Override
void transformUri(final URI src, final URI dst, final XsltTransformer transformer) throws DITAOTException {
if (!exists(src)) {
return;
}
Destination result = null;
try {
final Source source = getSource(src);
Expand Down
30 changes: 21 additions & 9 deletions src/main/plugins/org.dita.base/build_preprocess2_template.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,27 @@ See the accompanying LICENSE file for applicable license.
</dita-ot-fail>

<property name="clean-preprocess.use-result-filename" value="true"/>

<basename property="dita.input.filename" file="${args.input}" />
<pathconvert property="dita.map.filename.root">
<path path="${dita.input.filename}"/>
<chainedmapper>
<mapper type="flatten"/>
<mapper type="regexp" from="^(.+)(\..+?)$$" to="\1"/>
</chainedmapper>
</pathconvert>

<local name="input.isFile"/>
<condition property="input.isFile" value="true">
<available file="${args.input}" type="file"/>
</condition>
<sequential if:true="${input.isFile}">
<basename property="dita.input.filename" file="${args.input}" />
<pathconvert property="dita.map.filename.root">
<path path="${dita.input.filename}"/>
<chainedmapper>
<mapper type="flatten"/>
<mapper type="regexp" from="^(.+)(\..+?)$$" to="\1"/>
</chainedmapper>
</pathconvert>
</sequential>
<sequential unless:true="${input.isFile}">
<taskdef name="uriBasenameTask" classname="org.dita.dost.ant.UriBasenameTask"/>
<uriBasenameTask property="dita.input.filename" file="${args.input}" />
<uriBasenameTask property="dita.map.filename.root" file="${args.input}" suffix=".*"/>
</sequential>

<property name="dita.topic.filename.root" value="${dita.map.filename.root}"/>

<echo level="info" if:true="${legacy-format}">*****************************************************************</echo>
Expand Down
2 changes: 1 addition & 1 deletion src/main/plugins/org.dita.pdf2/cfg/common/vars/sv.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ See the accompanying LICENSE file for applicable license.
<variable id="Appendix with number">Appendix <param ref-name="number"/></variable>
<variable id="Part with number">Del <param ref-name="number"/></variable>
<variable id="Required-Cleanup"><!--TODO:[Required-Cleanup]--></variable>
<variable id="On the page"> na strani <param ref-name="pagenum"/></variable>
<variable id="On the page"> på sidan <param ref-name="pagenum"/></variable>
<variable id="Page"> sidan <param ref-name="pagenum"/></variable>
<variable id="This link"/><!--UNUSED-->
<variable id="Child topics"/><!--UNUSED-->
Expand Down
12 changes: 0 additions & 12 deletions src/test/java/org/dita/dost/IntegrationTestPreprocess2.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,6 @@ public void testcopyto() throws Throwable {
builder().name(Paths.get("copyto", "basic")).transtype(PREPROCESS).input(Paths.get("TC2.ditamap")).test();
}

@Test
public void testconrefmissingfile() throws Throwable {
builder()
.name(Paths.get("conref", "conrefmissingfile"))
.transtype(PREPROCESS)
.input(Paths.get("badconref.dita"))
.put("validate", "false")
.warnCount(1)
.errorCount(5)
.test();
}

@Disabled
@Test
public void testcopyto_linktarget() throws Throwable {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
/*
* This file is part of the DITA Open Toolkit project.
*
* Copyright 2013 Jarno Elovirta
* Copyright 2024 Jarno Elovirta
*
* See the accompanying LICENSE file for applicable license.
*/
package org.dita.dost.util;
package org.dita.dost.ant;

import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertEquals;

import java.net.URI;
import java.net.URISyntaxException;
import org.apache.tools.ant.Project;
import org.dita.dost.ant.UriBasenameTask;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -74,6 +73,14 @@ public void testWildcardSuffix() throws URISyntaxException {
assertEquals("bar", basename.getProject().getProperty("test"));
}

@Test
public void testWildcardSuffixWithEscapedCharacters() throws URISyntaxException {
basename.setFile(new URI("file:/foo/foo%20bar.baz"));
basename.setSuffix(".*");
basename.execute();
assertEquals("foo bar", basename.getProject().getProperty("test"));
}

@Test
public void testWildcardSuffixNoMatch() throws URISyntaxException {
basename.setFile(new URI("file:/foo/bar"));
Expand Down

0 comments on commit 2309e5d

Please sign in to comment.