# A2uiExecutionContext

Artifact: [androidx.a2ui:a2ui-model](https://developer.android.com/jetpack/androidx/releases/a2ui) [View Source](https://cs.android.com/search?q=file:androidx/a2ui/model/protocol/A2uiExecutionContext.kt+class:androidx.a2ui.model.protocol.A2uiExecutionContext) Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui#1.0.0-alpha02)

*** ** * ** ***


```
public interface A2uiExecutionContext
```

<br />

*** ** * ** ***

Provides environment access, dynamic payload evaluation, and function execution capabilities within the scope of a specific component.

## Summary

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/java/lang/Object.html` | `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#evaluatePayload(kotlin.Any)(https://developer.android.com/reference/java/lang/Object.html payload)` Evaluates a dynamic payload. |
| `abstract https://developer.android.com/reference/java/lang/Object.html` | `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#executeFunction(kotlin.String,kotlin.collections.Map)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Map.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Object.html> args )` Executes a catalog function by name. |
| `abstract @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiDataPath` | `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#getDataPath()()` The base data path used to resolve relative paths in this context. |
| `default https://developer.android.com/reference/androidx/a2ui/model/catalog/A2uiFunctionDefinition` | `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#getFunctionDefinition(kotlin.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name)` Returns the definition of a catalog function by name, or null if not found. |
| `abstract @https://developer.android.com/reference/androidx/annotation/NonNull T` | `<T extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#getOrCreateFunctionScopedCache(androidx.a2ui.model.catalog.A2uiFunctionDefinition,kotlin.Function0)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/a2ui/model/catalog/A2uiFunctionDefinition functionDefinition, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory )` Gets or creates a component-scoped cache for `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#getOrCreateFunctionScopedCache(androidx.a2ui.model.catalog.A2uiFunctionDefinition,kotlin.Function0)`. |
| `abstract https://developer.android.com/reference/java/lang/Object.html` | `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#resolveValue(androidx.a2ui.model.protocol.A2uiDataPath)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiDataPath path)` Resolves a value from the data model at the given path. |

## Public methods

### evaluatePayload

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui#1.0.0-alpha02)

```
abstract Object evaluatePayload(Object payload)
```

Evaluates a dynamic payload.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html payload` | payload to evaluate |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html` | evaluated result, or null if evaluation fails |

### executeFunction

```
abstract Object executeFunction(
    @NonNull String name,
    @NonNull Map<@NonNull String, @NonNull Object> args
)
```

Executes a catalog function by name.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name` | name of the function to execute |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/Map.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Object.html> args` | arguments to pass to the function |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html` | result of the function execution, or null if execution fails |

### getDataPath

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui#1.0.0-alpha02)

```
abstract @NonNull A2uiDataPath getDataPath()
```

The base data path used to resolve relative paths in this context.

### getFunctionDefinition

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui#1.0.0-alpha02)

```
default A2uiFunctionDefinition getFunctionDefinition(@NonNull String name)
```

Returns the definition of a catalog function by name, or null if not found.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html name` | name of the function |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/a2ui/model/catalog/A2uiFunctionDefinition` | function definition, or null if the function is not found in the catalog |

### getOrCreateFunctionScopedCache

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui#1.0.0-alpha02)

```
abstract @NonNull T <T extends Object> getOrCreateFunctionScopedCache(
    @NonNull A2uiFunctionDefinition functionDefinition,
    @NonNull Function0<@NonNull T> factory
)
```

Gets or creates a component-scoped cache for `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#getOrCreateFunctionScopedCache(androidx.a2ui.model.catalog.A2uiFunctionDefinition,kotlin.Function0)`.

Each component and `https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiExecutionContext#getOrCreateFunctionScopedCache(androidx.a2ui.model.catalog.A2uiFunctionDefinition,kotlin.Function0)` pair gets a separate cache that persists across function invocations and data model updates. Ideal for storing the results of heavy operations that do *not* rely on data model values (e.g., static metadata, parsed templates, compiled regexes, etc.).

Warning: The cache does not refresh upon data model changes. Caching values that are based on the data model will result in a stale cache.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/a2ui/model/catalog/A2uiFunctionDefinition functionDefinition` | definition identifying the cache |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<@https://developer.android.com/reference/androidx/annotation/NonNull T> factory` | factory to construct the cache if missing |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull T` | cache instance |

### resolveValue

Added in [1.0.0-alpha02](https://developer.android.com/jetpack/androidx/releases/a2ui#1.0.0-alpha02)

```
abstract Object resolveValue(@NonNull A2uiDataPath path)
```

Resolves a value from the data model at the given path.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/a2ui/model/protocol/A2uiDataPath path` | data path to resolve |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/Object.html` | resolved value, or null if value resolution fails |