adjusted keepstrings behavior to reflect changes in keepBooleanAsString & keepNumberAsString

This commit is contained in:
marilynel 2025-04-06 11:04:33 -07:00
parent 8dbf03e76b
commit 53da5ce2a9
2 changed files with 28 additions and 0 deletions

View File

@ -224,6 +224,7 @@ public class XMLParserConfiguration extends ParserConfiguration {
@Override @Override
public XMLParserConfiguration withKeepStrings(final boolean newVal) { public XMLParserConfiguration withKeepStrings(final boolean newVal) {
XMLParserConfiguration newConfig = this.clone(); XMLParserConfiguration newConfig = this.clone();
newConfig.keepStrings = newVal;
newConfig.keepNumberAsString = newVal; newConfig.keepNumberAsString = newVal;
newConfig.keepBooleanAsString = newVal; newConfig.keepBooleanAsString = newVal;
return newConfig; return newConfig;
@ -241,6 +242,7 @@ public class XMLParserConfiguration extends ParserConfiguration {
public XMLParserConfiguration withKeepNumberAsString(final boolean newVal) { public XMLParserConfiguration withKeepNumberAsString(final boolean newVal) {
XMLParserConfiguration newConfig = this.clone(); XMLParserConfiguration newConfig = this.clone();
newConfig.keepNumberAsString = newVal; newConfig.keepNumberAsString = newVal;
newConfig.keepStrings = newConfig.keepBooleanAsString && newConfig.keepNumberAsString;
return newConfig; return newConfig;
} }
@ -256,6 +258,7 @@ public class XMLParserConfiguration extends ParserConfiguration {
public XMLParserConfiguration withKeepBooleanAsString(final boolean newVal) { public XMLParserConfiguration withKeepBooleanAsString(final boolean newVal) {
XMLParserConfiguration newConfig = this.clone(); XMLParserConfiguration newConfig = this.clone();
newConfig.keepBooleanAsString = newVal; newConfig.keepBooleanAsString = newVal;
newConfig.keepStrings = newConfig.keepBooleanAsString && newConfig.keepNumberAsString;
return newConfig; return newConfig;
} }

View File

@ -794,6 +794,31 @@ public class XMLConfigurationTest {
Util.compareActualVsExpectedJsonObjects(actualJsonOutput,expected); Util.compareActualVsExpectedJsonObjects(actualJsonOutput,expected);
} }
/**
* Test keepStrings behavior when setting keepBooleanAsString, keepNumberAsString
*/
@Test
public void test_keepStringBehavior() {
XMLParserConfiguration xpc = new XMLParserConfiguration().withKeepStrings(true);
assertEquals(xpc.isKeepStrings(), true);
xpc = xpc.withKeepBooleanAsString(true);
xpc = xpc.withKeepNumberAsString(false);
assertEquals(xpc.isKeepStrings(), false);
xpc = xpc.withKeepBooleanAsString(false);
xpc = xpc.withKeepNumberAsString(true);
assertEquals(xpc.isKeepStrings(), false);
xpc = xpc.withKeepBooleanAsString(true);
xpc = xpc.withKeepNumberAsString(true);
assertEquals(xpc.isKeepStrings(), true);
xpc = xpc.withKeepBooleanAsString(false);
xpc = xpc.withKeepNumberAsString(false);
assertEquals(xpc.isKeepStrings(), false);
}
/** /**
* JSON string cannot be reverted to original xml. * JSON string cannot be reverted to original xml.
*/ */