TODO moved out to readme.txt which contains latest interesting issues - they should become JIRAs when the dust has settled
This commit is contained in:
13
org.springframework.expression/readme.txt
Normal file
13
org.springframework.expression/readme.txt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
List of outstanding things to think about - turn into JIRAs once distilled to a core set of issues
|
||||||
|
|
||||||
|
High Importance
|
||||||
|
|
||||||
|
- In the resolver/executor model we cache executors. They are currently recorded in the AST and so if the user chooses to evaluate an expression
|
||||||
|
in a different context then the stored executor may be incorrect. It may harmless 'fail' which would cause us to retrieve a new one, but
|
||||||
|
can it do anything malicious? In which case we either need to forget them when the context changes or store them elsewhere. Should caching be
|
||||||
|
something that can be switched on/off by the context? (shouldCacheExecutors() on the interface?)
|
||||||
|
|
||||||
|
Low Importance
|
||||||
|
|
||||||
|
- For the ternary operator, should isWritable() return true/false depending on evaluating the condition and check isWritable() of whichever branch it
|
||||||
|
would have taken? At the moment ternary expressions are just considered NOT writable.
|
||||||
@@ -29,9 +29,9 @@ import org.springframework.expression.EvaluationContext;
|
|||||||
import org.springframework.expression.EvaluationException;
|
import org.springframework.expression.EvaluationException;
|
||||||
import org.springframework.expression.MethodExecutor;
|
import org.springframework.expression.MethodExecutor;
|
||||||
import org.springframework.expression.MethodResolver;
|
import org.springframework.expression.MethodResolver;
|
||||||
|
import org.springframework.expression.spel.ExpressionState;
|
||||||
import org.springframework.expression.spel.SpelException;
|
import org.springframework.expression.spel.SpelException;
|
||||||
import org.springframework.expression.spel.SpelMessages;
|
import org.springframework.expression.spel.SpelMessages;
|
||||||
import org.springframework.expression.spel.ExpressionState;
|
|
||||||
import org.springframework.expression.spel.internal.Utils;
|
import org.springframework.expression.spel.internal.Utils;
|
||||||
import org.springframework.expression.spel.processors.AverageProcessor;
|
import org.springframework.expression.spel.processors.AverageProcessor;
|
||||||
import org.springframework.expression.spel.processors.CountProcessor;
|
import org.springframework.expression.spel.processors.CountProcessor;
|
||||||
@@ -48,7 +48,7 @@ public class MethodReference extends SpelNode {
|
|||||||
private static Map<String, DataProcessor> registeredProcessers = new HashMap<String, DataProcessor>();
|
private static Map<String, DataProcessor> registeredProcessers = new HashMap<String, DataProcessor>();
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private MethodExecutor fastInvocationAccessor; // TODO should this be nulled if executing in a different context or is it OK to keep?
|
private MethodExecutor fastInvocationAccessor;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
registeredProcessers.put("count", new CountProcessor());
|
registeredProcessers.put("count", new CountProcessor());
|
||||||
@@ -309,7 +309,8 @@ public class MethodReference extends SpelNode {
|
|||||||
if (cause instanceof SpelException) {
|
if (cause instanceof SpelException) {
|
||||||
throw (SpelException) cause;
|
throw (SpelException) cause;
|
||||||
} else {
|
} else {
|
||||||
throw new SpelException(cause, SpelMessages.PROBLEM_LOCATING_METHOD, name, contextObject.getClass());
|
throw new SpelException(cause, SpelMessages.PROBLEM_LOCATING_METHOD, name, contextObject
|
||||||
|
.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user