[ 
https://issues.apache.org/jira/browse/CAMEL-26087?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-26087.
---------------------------------
    Resolution: Fixed

Fixed by https://github.com/apache/camel/pull/28595, merged to main for 4.24.0.

_Claude Code on behalf of davsclaus_

> camel-stax - xtokenize fails on valid XML that starts with a comment or 
> doctype, and mode 'w' fails or gives unbalanced wrappers when the matches are 
> at different depths
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26087
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26087
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-stax
>            Reporter: shashank
>            Assignee: shashank
>            Priority: Major
>             Fix For: 4.24.0
>
>
> Two cases where {{xtokenize}} ({{XMLTokenExpressionIterator}}, main 
> 6a2f66ddec3e) fails on valid XML.
> # A document whose prolog has a comment or a doctype and no XML declaration 
> fails in every mode with {{XMLStreamException: XMLStreamReader does not 
> supporting getting location}} ({{<!-- generated by the order export 
> -->\n<orders><order>1</order>...}}). The second compliance check (CAMEL-8164) 
> treats text before the first start element that starts with {{<}} but not 
> {{<?}} as proof of a reader without usable locations; with a compliant reader 
> (Woodstox) that text is the prolog. Nothing is split and the message points 
> at the StAX implementation.
> # Mode {{w}} with a descendant path whose matches are at different depths: 
> {{<orders><order>1</order><box><order>2</order></box></orders>}} with 
> {{xtokenize("//order", 'w')}} routes the first token and then fails with 
> {{IndexOutOfBoundsException: Index -1 out of bounds for length 0}}; with a 
> container inside a container of the same name a later token has an unbalanced 
> wrapper ({{<orders><box><order>2</order></orders>}}). The segment log is 
> popped by element name, but an element that starts right after a match has no 
> entry of its own, and an inner element of the same name stops the pop too 
> early.
> *Fix*: the compliance check looks at what the reader read after that text: a 
> reader reporting the start of the start tag has the tag still ahead 
> ({{<name}} followed by {{>}}, {{/}} or white space); Woodstox 7.3.0 does, the 
> JDK reader reports the end of the tag and is still refused. Mode {{w}} 
> records the depth of each segment and the end of an element removes the 
> segments deeper than it; the preceding siblings kept in the wrapper 
> (CAMEL-17466) are unchanged.
> *Tests*: new {{XMLTokenizePrologAndWrapDepthTest}}, 5 tests, all fail on main 
> (the {{XMLStreamException}} above for a comment, a doctype and a comment 
> containing the root's start tag; the {{IndexOutOfBoundsException}}; 
> {{Expected: <<orders><order>2</order></orders>> but was: 
> <<orders><box><order>2</order></orders>>}}). Unit tests of camel-stax with 
> the fix: 116 run, 0 failures, 2 skipped. A differential run against a DOM 
> parser on 20,000 generated documents: on main 3,065 fail in every mode and 
> mode {{w}} with {{//*:order}} fails on 633 more and gives 72 tokens that are 
> not well-formed; with the fix none.
> *Related*: mode {{t}} does not decode entities and modes {{i}}/{{u}} cut the 
> start tag at a {{>}} inside an attribute value: separate issue.
> *How it was found*: a reference differential of {{xtokenize}} against a DOM 
> parser.
> *Affected*: main, camel-4.23.x, camel-4.22.x, camel-4.18.x and camel-4.14.x 
> (same code). Read, not run.
> _Filed with Claude Code on behalf of allthingssecurity._



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to