You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unfortunately, we hit another problem. When the smooks config contains an xpath expression with positions declarations a java.util.ConcurrentModificationException will be thrown. We could reproduce the problem with a modified version of the xml2java example.
The smooks config <jb:bean beanId="header" class="org.smooks.examples.xml2java.model.Header" createOnElement="header[2]">
This will produce a
org.smooks.api.SmooksException: Failed to filter source
at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:122)
at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:94)
at org.smooks.Smooks._filter(Smooks.java:546)
at org.smooks.Smooks.filterSource(Smooks.java:499)
at org.smooks.examples.xml2java.Main.runSmooks(Main.java:85)
at org.smooks.examples.xml2java.JavabeanTest.test(JavabeanTest.java:62)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
at org.smooks.engine.delivery.sax.ng.SaxNgContentDeliveryConfig.addPositionCounters(SaxNgContentDeliveryConfig.java:243)
at org.smooks.engine.delivery.sax.ng.SaxNgContentDeliveryConfig.addPositionCounters(SaxNgContentDeliveryConfig.java:232)
at org.smooks.engine.delivery.sax.ng.SaxNgContentDeliveryConfig.reduceIndex(SaxNgContentDeliveryConfig.java:222)
at org.smooks.engine.delivery.sax.ng.SaxNgContentDeliveryConfig.get(SaxNgContentDeliveryConfig.java:151)
at org.smooks.engine.delivery.sax.ng.SaxNgHandler.<init>(SaxNgHandler.java:118)
at org.smooks.engine.delivery.sax.ng.SaxNgHandler.<init>(SaxNgHandler.java:105)
at org.smooks.engine.delivery.sax.ng.SaxNgParser.parse(SaxNgParser.java:71)
at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:110)
... 8 more
…ig instead of adding it during optimisation phase in order to eliminate situations where one can obtain a ConcurrentModificationException
solve possible race condition in SaxNgVisitorBindings#getAll
throw SmooksException instead of UnsupportedOperationException when condition evaluator cannot be found
feat: use @priority to decide which visitors are fired first
Refs: smooks#769
…ig instead of adding it during optimisation phase in order to eliminate situations where one can obtain a ConcurrentModificationException (#770)
solve possible race condition in SaxNgVisitorBindings#getAll
throw SmooksException instead of UnsupportedOperationException when condition evaluator cannot be found
feat: use @priority to decide which visitors are fired first
Refs: #769
Describe the bug
Quoting the conversation in https://groups.google.com/g/smooks-user/c/hLen9nplpMo/m/8gmWQmpKAQAJ:
To Reproduce
Use a selector where the last step has a predicate index like
header[2]
.Expected behavior
No exception should occur.
Environment
The text was updated successfully, but these errors were encountered: