Skip to content

Commit

Permalink
fix(xjx-sax): execute endTag SaxHandler callback for self-closing tags
Browse files Browse the repository at this point in the history
  • Loading branch information
jonas-grgt committed Jan 17, 2024
1 parent fdcfae2 commit 2040f47
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 7 deletions.
7 changes: 4 additions & 3 deletions xjx-sax/src/main/java/io/jonasg/xjx/sax/SaxParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ private void handleToken(Token<?> token, SaxHandler saxHandler) {
var attributes = getAttributes(startTag);
saxHandler.startTag(startTag.namespace(), startTag.name(), attributes);
} else if (token.type().equals(Token.Type.SELF_CLOSING_TAG)) {
var startTagValue = (StartTag)token.value();
var attributes = getAttributes(startTagValue);
saxHandler.startTag(startTagValue.namespace(), startTagValue.name(), attributes);
var startTag = (StartTag)token.value();
var attributes = getAttributes(startTag);
saxHandler.startTag(startTag.namespace(), startTag.name(), attributes);
saxHandler.endTag(startTag.namespace(), startTag.name());
} else if (token.type().equals(Token.Type.END_TAG)) {
var endTag = (EndTag)token.value();
saxHandler.endTag(endTag.namespace(), endTag.name());
Expand Down
32 changes: 28 additions & 4 deletions xjx-sax/src/test/java/io/jonasg/xjx/sax/SaxParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,8 @@ public void endTag(String namespace, String name) {

// then
Assertions.assertThat(actualEndTags)
.hasSize(1)
.contains(new ActualEndTag("animals"));
.hasSize(2)
.contains(new ActualEndTag("animals"), new ActualEndTag("dog"));
}

@Test
Expand All @@ -219,10 +219,34 @@ public void endTag(String namespace, String name) {
}
});

// then
Assertions.assertThat(actualEndTags)
.hasSize(2)
.contains(new ActualEndTag("a", "animals"), new ActualEndTag("dog"));
}

@Test
void onSelfClosingTag() {
// given
var parser = new SaxParser();
var xmlDocument = new BufferedReader(new StringReader("""
<?xml version="1.0" encoding="UTF-8"?>
<dog/>
"""));

// when
var actualEndTags = new ArrayList<>();
parser.parse(xmlDocument, new TestSaxHandler() {
@Override
public void endTag(String namespace, String name) {
actualEndTags.add(new ActualEndTag(namespace, name));
}
});

// then
Assertions.assertThat(actualEndTags)
.hasSize(1)
.contains(new ActualEndTag("a", "animals"));
.contains(new ActualEndTag("dog"));
}
}

Expand Down Expand Up @@ -250,7 +274,7 @@ public void endTag(String namespace, String name) {

// then
Assertions.assertThat(actualEndTags)
.hasSize(1)
.hasSize(2)
.contains(new ActualEndTag("animals"));
}
}
Expand Down

0 comments on commit 2040f47

Please sign in to comment.