public class JavaReflectionApiExecutor extends java.lang.Object implements Executor
Executor
provides an implementation for Executor.getMethodResult(proguard.evaluation.executor.MethodExecutionInfo, proguard.evaluation.ValueCalculator)
which
resolves a number of simple Class
and ClassLoader
API methods.Modifier and Type | Class and Description |
---|---|
static class |
JavaReflectionApiExecutor.Builder
Builder for
JavaReflectionApiExecutor . |
Modifier and Type | Method and Description |
---|---|
MethodResult |
getMethodResult(MethodExecutionInfo methodExecutionInfo,
ValueCalculator valueCalculator)
Calculate the result of a given method.
|
java.util.Set<MethodSignature> |
getSupportedMethodSignatures()
Get a list of method signatures that indicate which methods are supported by this executor.
|
public MethodResult getMethodResult(MethodExecutionInfo methodExecutionInfo, ValueCalculator valueCalculator)
Executor
getMethodResult
in interface Executor
methodExecutionInfo
- Information about the called method.valueCalculator
- a function mapping the result of a method invocation (can be an Object
with the result if the executor calculates a real value or a Model
) to the appropriate Value
used by the
analysis. Should also be used to create values of unknown value since the executor might be
able to provide additional information on them even if the value itself is not known (e.g.,
on the identifier of the returned value).MethodResult.invalidResult()
, so that the caller can know that execution failed and
just provide its best approximation of the result.public java.util.Set<MethodSignature> getSupportedMethodSignatures()
Executor
The returned methods should be exactly the ones that the executor is expected to be able to handle. The invocation unit does not make any additional assumption on the executors available to execute a method and will match them iff the signature of the target method matches exactly.
Only full method signatures should be returned, the invocation unit does not support wildcards.
getSupportedMethodSignatures
in interface Executor