public class Context extends Object
Context
offers a means of passing arbitrary data (key-value pairs) to pipeline policies.
Most applications do not need to pass arbitrary data to the pipeline and can pass Context.NONE
or
null
.
Each context object is immutable. The Context.addData(Object, Object)
method creates a new
Context
object that refers to its parent, forming a linked list.
Modifier and Type | Field and Description |
---|---|
static Context |
NONE
Signifies that no data needs to be passed to the pipeline.
|
Constructor and Description |
---|
Context(Object key,
Object value)
Constructs a new
Context object. |
Modifier and Type | Method and Description |
---|---|
Context |
addData(Object key,
Object value)
|
Optional<Object> |
getData(Object key)
Scans the linked-list of
Context objects looking for one with the specified key. |
Map<Object,Object> |
getValues()
|
static Context |
of(Map<Object,Object> keyValues)
|
public static final Context NONE
public Context(Object key, Object value)
Context
object.
Code samples
// Create an empty context having no data Context emptyContext = Context.NONE; // Tracing spans created by users can be passed to calling methods in sdk clients using Context object final String userParentSpan = "user-parent-span"; // Create a context using the provided key and user parent span Context keyValueContext = new Context(PARENT_SPAN_KEY, userParentSpan);
key
- The key with which the specified value should be associated.value
- The value to be associated with the specified key.IllegalArgumentException
- If key
is null
.public Context addData(Object key, Object value)
Context
object with the specified key-value pair to
the existing Context
chain.
Code samples
// Users can send parent span information and pass additional metadata to attach to spans of the calling methods // using the Context object final String hostNameValue = "host-name-value"; final String entityPathValue = "entity-path-value"; final String userParentSpan = "user-parent-span"; Context parentSpanContext = new Context(PARENT_SPAN_KEY, userParentSpan); // Add a new key value pair to the existing context object. Context updatedContext = parentSpanContext.addData(HOST_NAME_KEY, hostNameValue) .addData(ENTITY_PATH_KEY, entityPathValue); // Both key values found on the same updated context object System.out.printf("Hostname value: %s%n", updatedContext.getData(HOST_NAME_KEY).get()); System.out.printf("Entity Path value: %s%n", updatedContext.getData(ENTITY_PATH_KEY).get());
key
- The key with which the specified value should be associated.value
- The value to be associated with the specified key.Context
object containing the specified pair added to the set of pairs.IllegalArgumentException
- If key
is null
.public static Context of(Map<Object,Object> keyValues)
Context
object with all the keys and values provided by
the input Map
.
Code samples
final String key1 = "Key1"; final String value1 = "first-value"; Map<Object, Object> keyValueMap = new HashMap<>(); keyValueMap.put(key1, value1); // Create a context using the provided key value pair map Context keyValueContext = Context.of(keyValueMap); System.out.printf("Key1 value %s%n", keyValueContext.getData(key1).get());
keyValues
- The input key value pairs that will be added to this context.IllegalArgumentException
- If keyValues
is null
or emptypublic Optional<Object> getData(Object key)
Context
objects looking for one with the specified key.
Note that the first key found, i.e. the most recently added, will be returned.
Code samples
final String key1 = "Key1"; final String value1 = "first-value"; // Create a context object with given key and value Context context = new Context(key1, value1); // Look for the specified key in the returned context object Optional<Object> optionalObject = context.getData(key1); if (optionalObject.isPresent()) { System.out.printf("Key1 value: %s%n", optionalObject.get()); } else { System.out.println("Key1 does not exist or have data."); }
key
- The key to search for.IllegalArgumentException
- If key
is null
.public Map<Object,Object> getValues()
Context
objects populating a Map
with the values of the context.
Code samples
final String key1 = "Key1"; final String value1 = "first-value"; final String key2 = "Key2"; final String value2 = "second-value"; Context context = new Context(key1, value1) .addData(key2, value2); Map<Object, Object> contextValues = context.getValues(); if (contextValues.containsKey(key1)) { System.out.printf("Key1 value: %s%n", contextValues.get(key1)); } else { System.out.println("Key1 does not exist."); } if (contextValues.containsKey(key2)) { System.out.printf("Key2 value: %s%n", contextValues.get(key2)); } else { System.out.println("Key2 does not exist."); }
Copyright © 2021 Microsoft Corporation. All rights reserved.