Package org.opensaml.profile.context

# Class MetricContext

java.lang.Object
org.opensaml.messaging.context.BaseContext
org.opensaml.profile.context.MetricContext

All Implemented Interfaces:
  `Iterable<BaseContext>`

public final class MetricContext extends BaseContext
Child context that supplies instructions to the runtime actions about timers to start and stop to measure performance.

## Nested Class Summary

## Nested classes/interfaces inherited from class org.opensaml.messaging.context.BaseContext

`BaseContext.ContextSetNoRemoveIteratorDecorator, BaseContext.DeprecatedContextClassNameLookAside`

## Field Summary

Fields
Modifier and Type
Field
Description
`private final Map<String,String>`
`counterMap`
Map of objects to counter names.
`private final Multimap<String,com.codahale.metrics.Timer.Context>`
`timerContextMap`
Map of objects to contexts to perform a stop signal.
`private final Multimap<String,Pair<String,String>>`
`timerMap`
Map of objects to timer names to start and objects to stop the timer.

## Constructor Summary

Constructors
Constructor
Description
`MetricContext()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`MetricContext`
`addCounter(String counterName, String objectId)`
Add an object/counter mapping.
`MetricContext`
`addTimer(String timerName, String startId, String stopId)`
Add an object/timer mapping.
`void`
`dec(String objectId)`
Decrement a counter associated with an object, if any.
`Map<String,String>`
`getCounterMappings()`
Get a modifiable map of object/counter associations.
`Collection<Pair<String,String>>`
`getTimerMappings(String objectId)`
Get a modifiable collection of timer name / stop object pairs for the supplied start object ID.
`void`
`inc(String objectId)`
Increment a counter associated with an object, if any.
`void`
`start(String objectId)`
Conditionally starts one or more timers based on the supplied object identifier.
`void`
`stop(String objectId)`
Stops any timers associated with the supplied object identifier and removes them from the tracking map.

### Methods inherited from class org.opensaml.messaging.context.BaseContext

`addSubcontext, addSubcontext, clearSubcontexts, containsSubcontext, createSubcontext, ensureSubcontext, ensureSubcontext, getParent, getSubcontext, getSubcontext, getSubcontext, getSubcontext, iterator, removeFromParent, removeSubcontext, removeSubcontext, setParent`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.lang.Iterable

`forEach, spliterator`

## Field Details

### timerMap

@Nonnull private final Multimap<String,Pair<String,String>> timerMap
Map of objects to timer names to start and objects to stop the timer.

The first member is the timer name, the second the object to associate with the timer.

### timerContextMap

@Nonnull private final Multimap<String,com.codahale.metrics.Timer.Context> timerContextMap
Map of objects to contexts to perform a stop signal.

### counterMap

@Nonnull private final Map<String,String> counterMap
Map of objects to counter names.

## Constructor Details

### MetricContext

public MetricContext()
Constructor.

## Method Details

### addTimer

@Nonnull public MetricContext addTimer(@Nonnull @NotEmpty String timerName, @Nonnull @NotEmpty String startId, @Nonnull @NotEmpty String stopId)
Add an object/timer mapping.

Parameters:
  `timerName` - name of timer
  `startId` - ID of object to start timer with
  `stopId` - ID of object to stop timer
Returns:
  this context

### getTimerMappings

@Nonnull @Live public Collection<Pair<String,String>> getTimerMappings(@Nonnull @NotEmpty String objectId)
Get a modifiable collection of timer name / stop object pairs for the supplied start object ID.

Parameters:
  `objectId` - the object ID input
Returns:
  the collection of associated mappings

### addCounter

@Nonnull public MetricContext addCounter(@Nonnull @NotEmpty String counterName, @Nonnull @NotEmpty String objectId)
Add an object/counter mapping.

Parameters:
  `counterName` - name of counter
  `objectId` - object ID
Returns:
  this context

### getCounterMappings

@Nonnull @Live public Map<String,String> getCounterMappings()
Get a modifiable map of object/counter associations.

Returns:
  map of counters

### start

public void start(@Nonnull @NotEmpty String objectId)
Conditionally starts one or more timers based on the supplied object identifier.

The configured state of the context is used to determine whether, and which, timers to start, further influenced by the runtime state of the system with regard to enabling of metrics.

Parameters:
  `objectId` - ID of the object being timed

### stop

public void stop(@Nonnull @NotEmpty String objectId)
Stops any timers associated with the supplied object identifier and removes them from the tracking map.

Parameters:
  `objectId` - ID of the object being timed

### inc

public void inc(@Nonnull @NotEmpty String objectId)
Increment a counter associated with an object, if any.

Parameters:
  `objectId` - ID of object

### dec

public void dec(@Nonnull @NotEmpty String objectId)
Decrement a counter associated with an object, if any.

Parameters:
  `objectId` - ID of object