Skip to content

Commit b9a441b

Browse files
authored
Change FromXmlParser to reduce mutability (#756)
1 parent f68925b commit b9a441b

File tree

3 files changed

+20
-41
lines changed

3 files changed

+20
-41
lines changed

src/main/java/tools/jackson/dataformat/xml/XmlFactory.java

+12-33
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ public class XmlFactory
5757
/**********************************************************************
5858
*/
5959

60-
// !!! 09-Jan-2018, tatu: make final ASAP
61-
protected String _cfgNameForTextElement;
60+
protected final String _cfgNameForTextElement;
6261

6362
protected final XmlNameProcessor _nameProcessor;
6463

@@ -93,7 +92,7 @@ public XmlFactory(XMLInputFactory xmlIn) {
9392
public XmlFactory(XMLInputFactory xmlIn, XMLOutputFactory xmlOut) {
9493
this(DEFAULT_XML_READ_FEATURE_FLAGS, DEFAULT_XML_WRITE_FEATURE_FLAGS,
9594
xmlIn, xmlOut, XmlNameProcessors.newPassthroughProcessor(),
96-
null);
95+
FromXmlParser.DEFAULT_UNNAMED_TEXT_PROPERTY);
9796
}
9897

9998
protected XmlFactory(int xpFeatures, int xgFeatures,
@@ -435,15 +434,11 @@ public FromXmlParser createParser(ObjectReadContext readCtxt,
435434
}
436435

437436
// false -> not managed
438-
FromXmlParser xp = new FromXmlParser(readCtxt,
437+
return new FromXmlParser(readCtxt,
439438
_createContext(_createContentReference(sr), false),
440439
readCtxt.getStreamReadFeatures(_streamReadFeatures),
441440
readCtxt.getFormatReadFeatures(_formatReadFeatures),
442-
sr, _nameProcessor);
443-
if (_cfgNameForTextElement != null) {
444-
xp.setXMLTextElementName(_cfgNameForTextElement);
445-
}
446-
return xp;
441+
sr, _nameProcessor, _cfgNameForTextElement);
447442
}
448443

449444
/**
@@ -480,14 +475,10 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
480475
return StaxUtil.throwAsReadException(e, null);
481476
}
482477
sr = _initializeXmlReader(sr);
483-
FromXmlParser xp = new FromXmlParser(readCtxt, ioCtxt,
478+
return new FromXmlParser(readCtxt, ioCtxt,
484479
readCtxt.getStreamReadFeatures(_streamReadFeatures),
485480
readCtxt.getFormatReadFeatures(_formatReadFeatures),
486-
sr, _nameProcessor);
487-
if (_cfgNameForTextElement != null) {
488-
xp.setXMLTextElementName(_cfgNameForTextElement);
489-
}
490-
return xp;
481+
sr, _nameProcessor, _cfgNameForTextElement);
491482
}
492483

493484
@Override
@@ -501,14 +492,10 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
501492
return StaxUtil.throwAsReadException(e, null);
502493
}
503494
sr = _initializeXmlReader(sr);
504-
FromXmlParser xp = new FromXmlParser(readCtxt, ioCtxt,
495+
return new FromXmlParser(readCtxt, ioCtxt,
505496
readCtxt.getStreamReadFeatures(_streamReadFeatures),
506497
readCtxt.getFormatReadFeatures(_formatReadFeatures),
507-
sr, _nameProcessor);
508-
if (_cfgNameForTextElement != null) {
509-
xp.setXMLTextElementName(_cfgNameForTextElement);
510-
}
511-
return xp;
498+
sr, _nameProcessor, _cfgNameForTextElement);
512499
}
513500

514501
@Override
@@ -531,14 +518,10 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
531518
return StaxUtil.throwAsReadException(e, null);
532519
}
533520
sr = _initializeXmlReader(sr);
534-
FromXmlParser xp = new FromXmlParser(readCtxt, ioCtxt,
521+
return new FromXmlParser(readCtxt, ioCtxt,
535522
readCtxt.getStreamReadFeatures(_streamReadFeatures),
536523
readCtxt.getFormatReadFeatures(_formatReadFeatures),
537-
sr, _nameProcessor);
538-
if (_cfgNameForTextElement != null) {
539-
xp.setXMLTextElementName(_cfgNameForTextElement);
540-
}
541-
return xp;
524+
sr, _nameProcessor, _cfgNameForTextElement);
542525
}
543526

544527
@Override
@@ -558,14 +541,10 @@ protected FromXmlParser _createParser(ObjectReadContext readCtxt, IOContext ioCt
558541
return StaxUtil.throwAsReadException(e, null);
559542
}
560543
sr = _initializeXmlReader(sr);
561-
FromXmlParser xp = new FromXmlParser(readCtxt, ioCtxt,
544+
return new FromXmlParser(readCtxt, ioCtxt,
562545
readCtxt.getStreamReadFeatures(_streamReadFeatures),
563546
readCtxt.getFormatReadFeatures(_formatReadFeatures),
564-
sr, _nameProcessor);
565-
if (_cfgNameForTextElement != null) {
566-
xp.setXMLTextElementName(_cfgNameForTextElement);
567-
}
568-
return xp;
547+
sr, _nameProcessor, _cfgNameForTextElement);
569548
}
570549

571550
/*

src/main/java/tools/jackson/dataformat/xml/XmlFactoryBuilder.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import tools.jackson.core.StreamReadConstraints;
99
import tools.jackson.core.StreamWriteConstraints;
1010
import tools.jackson.core.base.DecorableTSFactory.DecorableTSFBuilder;
11+
import tools.jackson.dataformat.xml.deser.FromXmlParser;
1112

1213
/**
1314
* {@link tools.jackson.core.TSFBuilder}
@@ -50,7 +51,7 @@ public class XmlFactoryBuilder extends DecorableTSFBuilder<XmlFactory, XmlFactor
5051
*<p>
5152
* Name used for pseudo-property used for returning XML Text value (which does
5253
* not have actual element name to use). Defaults to empty String, but
53-
* may be changed for interoperability reasons: JAXB, for example, uses
54+
* may be changed for inter-operability reasons: JAXB, for example, uses
5455
* "value" as name.
5556
*/
5657
protected String _nameForTextElement;
@@ -82,6 +83,7 @@ protected XmlFactoryBuilder() {
8283
XmlFactory.DEFAULT_XML_WRITE_FEATURE_FLAGS);
8384
_classLoaderForStax = null;
8485
_nameProcessor = XmlNameProcessors.newPassthroughProcessor();
86+
_nameForTextElement = FromXmlParser.DEFAULT_UNNAMED_TEXT_PROPERTY;
8587
}
8688

8789
public XmlFactoryBuilder(XmlFactory base) {

src/main/java/tools/jackson/dataformat/xml/deser/FromXmlParser.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class FromXmlParser
6161
* may be changed for inter-operability reasons: JAXB, for example, uses
6262
* "value" as name.
6363
*/
64-
protected String _cfgNameForTextElement = DEFAULT_UNNAMED_TEXT_PROPERTY;
64+
protected final String _cfgNameForTextElement;
6565

6666
/*
6767
/**********************************************************************
@@ -74,7 +74,7 @@ public class FromXmlParser
7474
* {@link XmlReadFeature}s
7575
* are enabled.
7676
*/
77-
protected int _formatFeatures;
77+
protected final int _formatFeatures;
7878

7979
/*
8080
/**********************************************************************
@@ -158,13 +158,15 @@ public class FromXmlParser
158158
public FromXmlParser(ObjectReadContext readCtxt, IOContext ioCtxt,
159159
int parserFeatures, int xmlFeatures,
160160
XMLStreamReader xmlReader,
161-
XmlNameProcessor nameProcessor)
161+
XmlNameProcessor nameProcessor,
162+
String nameForTextElement)
162163
{
163164
super(readCtxt, ioCtxt, parserFeatures);
164165
_formatFeatures = xmlFeatures;
165166
_streamReadContext = XmlReadContext.createRootContext(-1, -1);
166167
_xmlTokens = new XmlTokenStream(xmlReader, ioCtxt.contentReference(),
167168
_formatFeatures, nameProcessor);
169+
_cfgNameForTextElement = nameForTextElement;
168170

169171
final int firstToken;
170172
try {
@@ -208,10 +210,6 @@ public Version version() {
208210
return PackageVersion.VERSION;
209211
}
210212

211-
public void setXMLTextElementName(String name) {
212-
_cfgNameForTextElement = name;
213-
}
214-
215213
@Override // since 3.0
216214
public XMLStreamReader2 streamReadInputSource() {
217215
return _xmlTokens.getXmlReader();

0 commit comments

Comments
 (0)