Interface ELMethodExecutor
- All Superinterfaces:
io.micronaut.core.order.Ordered
- All Known Implementing Classes:
CommonELResolver, ContributedELMethodExecutor, ExecutableMethodELExecutor, IntrospectionELResolver, ReflectiveELMethodExecutor, StreamELResolver
public interface ELMethodExecutor
extends io.micronaut.core.order.Ordered
Resolves and executes methods for expressions parsed at runtime.
Implementations are discovered as services by the interpreter. A provider can use generated code, a
registry, or another direct dispatch mechanism. Reflection is intentionally not part of this contract; it is
supplied separately by the optional interpreter-reflection module, whose executor says so with
isReflective().
- Since:
- 1.1
- Author:
- Denis Stepanov
-
Field Summary
Fields inherited from interface io.micronaut.core.order.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Method Summary
Modifier and TypeMethodDescriptiondefault intgetOrder()Returns the executor order.default booleanWhether the executor reaches the methods it resolves reflectively, rather than through what was generated or registered while the application compiled.@Nullable ELMethodresolve(jakarta.el.ELContext context, @Nullable Object base, @Nullable Object method, io.micronaut.core.type.Argument<?> @Nullable [] argumentTypes, Object @Nullable [] arguments) Resolves an instance or static method, or a constructor represented by<init>.default @Nullable ELMethodresolveFunction(jakarta.el.ELContext context, String prefix, String localName) Resolves a function bound by the expression context.
-
Method Details
-
isReflective
default boolean isReflective()Whether the executor reaches the methods it resolves reflectively, rather than through what was generated or registered while the application compiled. TheELSandboxof an expression parsed at runtime is consulted for the methods such an executor resolves, and only for them.- Returns:
- Whether the executor reflects,
falseby default
-
getOrder
default int getOrder()Returns the executor order. Lower values run first, following the MicronautOrderedcontract, so direct/generated implementations can take precedence over a general fallback such as reflection.- Specified by:
getOrderin interfaceio.micronaut.core.order.Ordered- Returns:
- The order, zero by default
-
resolve
@Nullable ELMethod resolve(jakarta.el.ELContext context, @Nullable Object base, @Nullable Object method, io.micronaut.core.type.Argument<?> @Nullable [] argumentTypes, Object @Nullable [] arguments) Resolves an instance or static method, or a constructor represented by<init>.- Parameters:
context- The EL contextbase- The instance, or anELClassfor a static method or constructormethod- The method nameargumentTypes- The parameter types supplied when the method expression was created, ornullarguments- The evaluated arguments, ornull- Returns:
- The resolved method, or
nullwhen this executor does not handle it
-
resolveFunction
default @Nullable ELMethod resolveFunction(jakarta.el.ELContext context, String prefix, String localName) Resolves a function bound by the expression context.The default implementation does not contribute functions. A reflection-backed implementation can use the Jakarta
FunctionMapperhere, while a generated implementation can provide functions without exposing reflective methods.- Parameters:
context- The EL contextprefix- The function prefixlocalName- The function name- Returns:
- The resolved function, or
nullwhen this executor does not handle it
-