From efc8a513d16d06f6b09aae8df7f4932075cc7f8f Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Fri, 16 Apr 2010 21:10:23 +0000 Subject: [PATCH] SPR-7100: '_' supported as first char of identifier git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3254 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../expression/spel/standard/Tokenizer.java | 3 +++ .../springframework/expression/spel/EvaluationTests.java | 7 +++++++ .../expression/spel/testresources/Inventor.java | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/org.springframework.expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java b/org.springframework.expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java index 10e2cbcee5b..5126222876a 100644 --- a/org.springframework.expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java +++ b/org.springframework.expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java @@ -57,6 +57,9 @@ class Tokenizer { case '+': pushCharToken(TokenKind.PLUS); break; + case '_': // the other way to start an identifier + lexIdentifier(); + break; case '-': pushCharToken(TokenKind.MINUS); break; diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/EvaluationTests.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/EvaluationTests.java index abd11dfabd7..e8d24fafbe1 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/EvaluationTests.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/EvaluationTests.java @@ -222,6 +222,12 @@ public class EvaluationTests extends ExpressionTestCase { evaluateAndCheckError("madeup", SpelMessage.PROPERTY_OR_FIELD_NOT_READABLE, 0, "madeup", "org.springframework.expression.spel.testresources.Inventor"); } + + @Test + public void testPropertyField02_SPR7100() { + evaluate("_name", "Nikola Tesla", String.class); + evaluate("_name_", "Nikola Tesla", String.class); + } @Test public void testRogueTrailingDotCausesNPE_SPR6866() { @@ -408,6 +414,7 @@ public class EvaluationTests extends ExpressionTestCase { evaluate("'christian'[8]", "n", String.class); } + @Test public void testIndexerError() { evaluateAndCheckError("new org.springframework.expression.spel.testresources.Inventor().inventions[1]",SpelMessage.CANNOT_INDEX_INTO_NULL_VALUE); diff --git a/org.springframework.expression/src/test/java/org/springframework/expression/spel/testresources/Inventor.java b/org.springframework.expression/src/test/java/org/springframework/expression/spel/testresources/Inventor.java index a7a7039d841..eba7a8b3f45 100644 --- a/org.springframework.expression/src/test/java/org/springframework/expression/spel/testresources/Inventor.java +++ b/org.springframework.expression/src/test/java/org/springframework/expression/spel/testresources/Inventor.java @@ -10,6 +10,8 @@ import java.util.Map; @SuppressWarnings("unused") public class Inventor { private String name; + public String _name; + public String _name_; public String publicName; private PlaceOfBirth placeOfBirth; private Date birthdate; @@ -36,6 +38,8 @@ public class Inventor { public Inventor(String name, Date birthdate, String nationality) { this.name = name; + this._name = name; + this._name_ = name; this.birthdate = birthdate; this.nationality = nationality; this.arrayContainer = new ArrayContainer();