DescriptionToshiya Kobayashi
2016-03-25 07:36:58 UTC
+++ This bug was initially created as a clone of Bug #1310981 +++
Description of problem:
The "java.lang.LinkageError" is not captured and rule compilation fails when "Bar.class" exists in classpath and an identifier "bar" is used in the rule. This only happens on case-preserving but case-insensitive systems (Mac or Windows.)
Very similar to "MVEL-43":
http://web.archive.org/web/20150516202621/http://jira.codehaus.org/browse/MVEL-43
Version-Release number of selected component (if applicable):
mvel2-2.2.7.Final-redhat-1
How reproducible:
Always
Steps to Reproduce:
1. have a rule using an identifier "bar" in any expression , for example, "abc.bar=Bar.XYZ"
2. package this rule in a war, and dependency Bar.class is packaged in an exploded folder under "WEB-INF/lib/" (Bar.class is not packaged in a jar archive)
3. deploy this war in EAP 6 on Mac machine.
Actual results:
NoClassDefFoundError is wrapped in java.lang.LinkageError which is not captured, hence rule compilation fails.
Expected results:
no exception :)
Additional info:
This code change captures "Throwable" instead which fixes MVEL-43:
https://github.com/codehaus/mvel/commit/90dc86c2aa528d06f7fc2670346fde2f7689b787
However that's for "org/mvel/ParserContext.java"
For BRMS 6.2 which uses "mvel2-2.2.7.Final-redhat-1", the "LinkageError" still got thrown / un-handled.
http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/org.mvel/mvel2/2.2.6.Final/org/mvel2/ParserConfiguration.java#172
--- Additional comment from Mario Fusco on 2016-03-18 11:14:27 EDT ---
Fixed on mvel by https://github.com/mvel/mvel/commit/d3aeaf17aa978d8c3e14d38c3afc821045d92f75