- Notifications
You must be signed in to change notification settings - Fork92
Callreset
on reusableSAXParser
instance#742
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
It is not clear to me what is gained by this change...
def parser: SAXParser = parserInstance.get | ||
def parser: SAXParser = { | ||
val p = parserInstance.get | ||
p.reset() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Auto-reset on get leads to surprising changes in behavior, e.g. non-persistence of the settings onXMLLoader.reader
, as witnessed by the changes to the test above.
Better place for auto-reset seems to beFactoryAdapter.loadDocument()
, but it will then apply to all readers, not just the default one...
Better still would be - in my opinion - not to reuse parsers, readers and factory adapters and not to use thread-locals.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
So revert#176?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I am not going to campaign for reverting it, but I am not a fan ;)
override def warning(e: SAXParseException): Unit = gotAnError = true | ||
override def error(e: SAXParseException): Unit = gotAnError = true | ||
override def fatalError(e: SAXParseException): Unit = gotAnError = true | ||
}) | ||
try { | ||
XML.loadString("<a>") | ||
XML.adapter.loadDocument(Source.fromString("<a>"), reader) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I'd love to makeXMLLoader.adapter
,NoBindingFactoryAdapter
andFactoryAdapter
private at some point (and remove some of them altogether), and addXMLLoader.loadDocument(inputSource: InputSource, reader: XMLReader)
...
It's really more of a guess... In a non-public codebase we have an Thanks for taking a look. |
Didn't manage to reproduce the failure we saw and suspect would be fixed by this PR. So that leaves as justification that "it seems right" to call reset, according to the Javadocs. |
Discussion:#176 (comment)