Browse Source

Fix space issue in AntStructure.DTDPrinter

Task AntStructure renders a project DTD. In AntStructure class DTDPrinter, line 327, a single statement is used to concatenate a list of enumerated values which are valid for an attribute. The list is enclosed in parentheses. At line 348 the string "#IMPLIED" is appended to all attribute definitions regardless of type. For other types like Boolean and CDATA, a space is appended. Not for these enumerations. This results in a DTD validation error. Ref [XERCES definition](https://xerces.apache.org/xerces-j/apiDocs/org/apache/xerces/utils/XMLMessages.html#MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF)

The full message displayed in VSCode may be different from elsewhere:

    White space is required before the attribute default in the declaration
    of attribute "x" for element "y".
    xml(MSG_SPACE_REQUIRED_BEFORE_DEFAULTDECL_IN_ATTDEF)

This simple one-line change appends the space character required to avoid that error.

**Note:** This should not be modified into a change on the `joinAlts` Collector which surrounds values in parentheses. That Collector is used elsewhere where regex syntax is applied immediately after. See line 298. That asterisk cannot be separated from the values with a space. The space must only be applied to line 327.
master
Tony Gravagno Jaikiran Pai 5 years ago
parent
commit
9b0842fafa
4 changed files with 10 additions and 2 deletions
  1. +1
    -0
      CONTRIBUTORS
  2. +3
    -0
      WHATSNEW
  3. +4
    -0
      contributors.xml
  4. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/AntStructure.java

+ 1
- 0
CONTRIBUTORS View File

@@ -433,6 +433,7 @@ Tom Eugelink
Tom May Tom May
Tomasz Bech Tomasz Bech
Tomáš Zezula Tomáš Zezula
Tony Gravagno
Trejkaz Xaoza Trejkaz Xaoza
Ulrich Schmidt Ulrich Schmidt
Uwe Schindler Uwe Schindler


+ 3
- 0
WHATSNEW View File

@@ -34,6 +34,9 @@ Fixed bugs:
then the forked mode launch would fail. then the forked mode launch would fail.
Bugzilla Report 63958 Bugzilla Report 63958


* Fixes an issue in AntStructure where an incorrect DTD was being generated.
Github Pull Request #116

Other changes: Other changes:
-------------- --------------




+ 4
- 0
contributors.xml View File

@@ -1783,6 +1783,10 @@
<first>Tomáš</first> <first>Tomáš</first>
<last>Zezula</last> <last>Zezula</last>
</name> </name>
<name>
<first>Tony</first>
<last>Gravagno</last>
</name>
<name> <name>
<first>Trejkaz</first> <first>Trejkaz</first>
<last>Xaoza</last> <last>Xaoza</last>


+ 2
- 2
src/main/org/apache/tools/ant/taskdefs/AntStructure.java View File

@@ -324,7 +324,7 @@ public class AntStructure extends Task {
|| !areNmtokens(values)) { || !areNmtokens(values)) {
sb.append("CDATA "); sb.append("CDATA ");
} else { } else {
sb.append(Stream.of(values).collect(joinAlts));
sb.append(Stream.of(values).collect(joinAlts)).append(" ");
} }
} catch (final InstantiationException | IllegalAccessException ie) { } catch (final InstantiationException | IllegalAccessException ie) {
sb.append("CDATA "); sb.append("CDATA ");
@@ -337,7 +337,7 @@ public class AntStructure extends Task {
sb.append("CDATA "); sb.append("CDATA ");
} else { } else {
sb.append(Stream.of(values).map(Enum::name) sb.append(Stream.of(values).map(Enum::name)
.collect(joinAlts));
.collect(joinAlts)).append(" ");
} }
} catch (final Exception x) { } catch (final Exception x) {
sb.append("CDATA "); sb.append("CDATA ");


Loading…
Cancel
Save