Issue Details (XML | Word | Printable)

Key: JEXL-22
Type: Improvement Improvement
Status: Resolved Resolved
Resolution: Fixed
Priority: Minor Minor
Assignee: Unassigned
Reporter: dion gillard
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Commons JEXL

Allow unicode literals to be used

Created: 26/Sep/06 11:37 AM   Updated: 26/Sep/06 12:51 PM
Return to search
Component/s: None
Affects Version/s: 1.1
Fix Version/s: 1.1.1

Time Tracking:
Not Specified

Resolution Date: 26/Sep/06 12:51 PM


 Description  « Hide
How can I use international characters in JEXL expressions?

For example: myvar == 'U?ytkownik' (string constant contains Polish 'z'
with dot)

I get the following exception:

org.apache.commons.jexl.parser.TokenMgrError: Lexical error at line 1,
column 17. Encountered: "\u0139" (313), after : "\'U"



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
dion gillard added a comment - 26/Sep/06 11:38 AM
From Randy H:

I had similar issue with the latest jexl 1.1 release. Seems the option for
unicode support is not enabled when using the parser was generated.

Here is what I did to get it work with non-ASCII code:

1. Download and unzip jexl 1.1 source from:
http://www.axint.net/apache/jakarta/commons/jexl/source/commons-jexl-1.1-src.zip

2. Download and unzip JavaCC 4.0 from:
https://javacc.dev.java.net/files/documents/17/26777/javacc-4.0.zip

3. Run javacc-4.0\bin\javacc -UNICODE_INPUT
commons-jexl-1.1-src\src\java\org\apache\commons\jexl\parser\Parser.jj

4. Copy *.java to
commons-jexl-1.1-src\src\java\org\apache\commons\jexl\parser

5. Run ant -f commons-jexl-1.1-src\build.xml

6. Use the new jar commons-jexl-1.1-src\target\commons-jexl-1.1.jar

7. Profilt!


dion gillard added a comment - 26/Sep/06 11:40 AM
javacc 4 generates jdk1.4 compatible source code by default. If you
need 1.3 or 1.2 compatible input use JDK_VERSION:1.2

The generated code still seems to have a few 1.4 specific pieces in
it, such as use of RuntimeException(Throwable).

If you want to compile Jexl against 1.2/1.3 using maven, you'll need
the following command line invocation (all on one line):

maven -Dmaven.compile.fork=yes -Dmaven.compile.executable=c:\jdk1.3.1_16\bin\javac.exe -Dbuild.compiler=modern clean test

Obviously the javac executable will probably be different on your machine.


dion gillard added a comment - 26/Sep/06 12:03 PM
I've used the original report to add a test to JexlTest, have regenerated the code and tested it.

I'm doing the tedious merge/restyle of the generated code so it matches SVN and generates smaller commit messages.


dion gillard added a comment - 26/Sep/06 12:51 PM
Code regenerated, test added.
Committed to svn on 2006-09-26