Skip to content

Commit cf1a780

Browse files
committed
Ref #25533: add resovleToList to SpEL
1 parent 33bf3c4 commit cf1a780

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/spec/expression/SpecExpressionResolver.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@
2020
*/
2121
package eu.openanalytics.containerproxy.spec.expression;
2222

23+
import java.util.Arrays;
24+
import java.util.Collection;
25+
import java.util.List;
2326
import java.util.Map;
2427
import java.util.concurrent.ConcurrentHashMap;
28+
import java.util.stream.Collectors;
2529

2630
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
2731
import org.springframework.context.ApplicationContext;
@@ -72,9 +76,9 @@ public SpecExpressionResolver(ApplicationContext appContext) {
7276
this.expressionParser = new SpelExpressionParser();
7377
}
7478

75-
public Object evaluate(String expression, SpecExpressionContext context) {
79+
public <T> T evaluate(String expression, SpecExpressionContext context, Class<T> resType) {
7680
if (expression == null) return null;
77-
if (expression.isEmpty()) return "";
81+
if (expression.isEmpty()) return null;
7882

7983
Expression expr = this.expressionParser.parseExpression(expression, this.beanExpressionParserContext);
8084

@@ -95,18 +99,27 @@ public Object evaluate(String expression, SpecExpressionContext context) {
9599
evaluationCache.put(context, sec);
96100
}
97101

98-
return expr.getValue(sec);
102+
return expr.getValue(sec, resType);
99103
}
100104

101105
public String evaluateToString(String expression, SpecExpressionContext context) {
102-
return String.valueOf(evaluate(expression, context));
106+
String res = evaluate(expression, context, String.class);
107+
if (res == null) {
108+
return "";
109+
}
110+
return res;
103111
}
104112

105113
public Long evaluateToLong(String expression, SpecExpressionContext context) {
106-
return Long.valueOf(evaluateToString(expression, context));
114+
return evaluate(expression, context, Long.class);
107115
}
108116

109117
public Boolean evaluateToBoolean(String expression, SpecExpressionContext context) {
110-
return Boolean.valueOf(evaluateToString(expression, context));
118+
return evaluate(expression, context, Boolean.class);
111119
}
120+
121+
public List<String> evaluateToList(String[] expressions, SpecExpressionContext context) {
122+
return Arrays.stream(expressions).flatMap( (el) ->
123+
((List<String>) evaluate(el, context, List.class)).stream()).collect(Collectors.toList());
124+
}
112125
}

0 commit comments

Comments
 (0)