use of cn.taketoday.expression.EvaluationException in project today-infrastructure by TAKETODAY.
the class IndexingTests method indexIntoGenericPropertyContainingNullList.
@Test
void indexIntoGenericPropertyContainingNullList() {
SpelParserConfiguration configuration = new SpelParserConfiguration(true, true);
SpelExpressionParser parser = new SpelExpressionParser(configuration);
Expression expression = parser.parseExpression("property");
assertThat(expression.getValueTypeDescriptor(this).toString()).isEqualTo("@cn.taketoday.expression.spel.IndexingTests$FieldAnnotation java.lang.Object");
assertThat(expression.getValue(this)).isEqualTo(property);
expression = parser.parseExpression("property[0]");
try {
assertThat(expression.getValue(this)).isEqualTo("bar");
} catch (EvaluationException ex) {
assertThat(ex.getMessage().startsWith("EL1027E")).isTrue();
}
}
use of cn.taketoday.expression.EvaluationException in project today-infrastructure by TAKETODAY.
the class IndexingTests method indexIntoGenericPropertyContainingGrowingList2.
@Test
void indexIntoGenericPropertyContainingGrowingList2() {
List<String> property2 = new ArrayList<>();
this.property2 = property2;
SpelParserConfiguration configuration = new SpelParserConfiguration(true, true);
SpelExpressionParser parser = new SpelExpressionParser(configuration);
Expression expression = parser.parseExpression("property2");
assertThat(expression.getValueTypeDescriptor(this).toString()).isEqualTo("java.util.ArrayList<?>");
assertThat(expression.getValue(this)).isEqualTo(property2);
expression = parser.parseExpression("property2[0]");
try {
assertThat(expression.getValue(this)).isEqualTo("bar");
} catch (EvaluationException ex) {
assertThat(ex.getMessage().startsWith("EL1053E")).isTrue();
}
}
use of cn.taketoday.expression.EvaluationException in project today-infrastructure by TAKETODAY.
the class IndexingTests method indexIntoGenericPropertyContainingGrowingList.
@Test
void indexIntoGenericPropertyContainingGrowingList() {
List<String> property = new ArrayList<>();
this.property = property;
SpelParserConfiguration configuration = new SpelParserConfiguration(true, true);
SpelExpressionParser parser = new SpelExpressionParser(configuration);
Expression expression = parser.parseExpression("property");
assertThat(expression.getValueTypeDescriptor(this).toString()).isEqualTo("@cn.taketoday.expression.spel.IndexingTests$FieldAnnotation java.util.ArrayList<?>");
assertThat(expression.getValue(this)).isEqualTo(property);
expression = parser.parseExpression("property[0]");
try {
assertThat(expression.getValue(this)).isEqualTo("bar");
} catch (EvaluationException ex) {
assertThat(ex.getMessage().startsWith("EL1053E")).isTrue();
}
}
use of cn.taketoday.expression.EvaluationException in project today-infrastructure by TAKETODAY.
the class IndexingTests method setGenericPropertyContainingListAutogrow.
@Test
void setGenericPropertyContainingListAutogrow() {
List<Integer> property = new ArrayList<>();
this.property = property;
SpelExpressionParser parser = new SpelExpressionParser(new SpelParserConfiguration(true, true));
Expression expression = parser.parseExpression("property");
assertThat(expression.getValueTypeDescriptor(this).toString()).isEqualTo("@cn.taketoday.expression.spel.IndexingTests$FieldAnnotation java.util.ArrayList<?>");
assertThat(expression.getValue(this)).isEqualTo(property);
expression = parser.parseExpression("property[0]");
try {
expression.setValue(this, "4");
} catch (EvaluationException ex) {
assertThat(ex.getMessage().startsWith("EL1053E")).isTrue();
}
}
use of cn.taketoday.expression.EvaluationException in project today-infrastructure by TAKETODAY.
the class ExpressionLanguageScenarioTests method testScenario_RegisteringJavaMethodsAsFunctionsAndCallingThem.
/**
* Scenario: using your own java methods and calling them from the expression
*/
@Test
public void testScenario_RegisteringJavaMethodsAsFunctionsAndCallingThem() throws SecurityException, NoSuchMethodException {
try {
// Create a parser
SpelExpressionParser parser = new SpelExpressionParser();
// Use the standard evaluation context
StandardEvaluationContext ctx = new StandardEvaluationContext();
ctx.registerFunction("repeat", ExpressionLanguageScenarioTests.class.getDeclaredMethod("repeat", String.class));
Expression expr = parser.parseRaw("#repeat('hello')");
Object value = expr.getValue(ctx);
assertThat(value).isEqualTo("hellohello");
} catch (EvaluationException | ParseException ex) {
throw new AssertionError(ex.getMessage(), ex);
}
}
Aggregations