org.jacoco.core.data

## Class ExecutionDataStore

- java.lang.Object
- - org.jacoco.core.data.ExecutionDataStore

All Implemented Interfaces:
  IExecutionDataVisitor

    public final class ExecutionDataStore
    extends Object
    implements IExecutionDataVisitor

In-memory data store for execution data. The data can be added through its `IExecutionDataVisitor` interface. If execution data is provided multiple times for the same class the data is merged, i.e. a probe is marked as executed if it is reported as executed at least once. This allows to merge coverage date from multiple runs. A instance of this class is not thread safe.

### Constructor Summary

Constructors
Constructor and Description
`ExecutionDataStore()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `accept(IExecutionDataVisitor visitor)` Writes the content of the store to the given visitor interface.
`boolean` `contains(String name)` Checks whether execution data for classes with the given name are contained in the store.
`ExecutionData` `get(long id)` Returns the `ExecutionData` entry with the given id if it exists in this store.
`ExecutionData` `get(Long id, String name, int probecount)` Returns the coverage data for the class with the given identifier.
`Collection<ExecutionData>` `getContents()` Returns a collection that represents current contents of the store.
`void` `put(ExecutionData data)` Adds the given `ExecutionData` object into the store.
`void` `reset()` Resets all execution data probes, i.e.
`void` `subtract(ExecutionData data)` Subtracts the probes in the given `ExecutionData` object from the store.
`void` `subtract(ExecutionDataStore store)` Subtracts all probes in the given execution data store from this store.
`void` `visitClassExecution(ExecutionData data)` Provides execution data for a class.

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

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

### Constructor Detail

#### ExecutionDataStore

    public ExecutionDataStore()

### Method Detail

#### put

    public void put(ExecutionData data)
             throws IllegalStateException

Adds the given `ExecutionData` object into the store. If there is already execution data with this same class id, this structure is merged with the given one.

Parameters:
  `data` - execution data to add or merge
Throws:
  `IllegalStateException` - if the given `ExecutionData` object is not compatible to a corresponding one, that is already contained
See Also:
  `ExecutionData.assertCompatibility(long, String, int)`

#### subtract

    public void subtract(ExecutionData data)
                  throws IllegalStateException

Subtracts the probes in the given `ExecutionData` object from the store. I.e. for all set probes in the given data object the corresponding probes in this store will be unset. If there is no execution data with id of the given data object this operation will have no effect.

Parameters:
  `data` - execution data to subtract
Throws:
  `IllegalStateException` - if the given `ExecutionData` object is not compatible to a corresponding one, that is already contained
See Also:
  `ExecutionData.assertCompatibility(long, String, int)`

#### subtract

    public void subtract(ExecutionDataStore store)

Subtracts all probes in the given execution data store from this store.

Parameters:
  `store` - execution data store to subtract
See Also:
  `subtract(ExecutionData)`

#### get

    public ExecutionData get(long id)

Returns the `ExecutionData` entry with the given id if it exists in this store.

Parameters:
  `id` - class id
Returns:
  execution data or `null`

#### contains

    public boolean contains(String name)

Checks whether execution data for classes with the given name are contained in the store.

Parameters:
  `name` - VM name
Returns:
  `true` if at least one class with the name is contained.

#### get

    public ExecutionData get(Long id,
                             String name,
                             int probecount)

Returns the coverage data for the class with the given identifier. If there is no data available under the given id a new entry is created.

Parameters:
  `id` - class identifier
  `name` - VM name of the class
  `probecount` - probe data length
Returns:
  execution data

#### reset

    public void reset()

Resets all execution data probes, i.e. marks them as not executed. The execution data objects itself are not removed.

#### getContents

    public Collection<ExecutionData> getContents()

Returns a collection that represents current contents of the store.

Returns:
  current contents

#### accept

    public void accept(IExecutionDataVisitor visitor)

Writes the content of the store to the given visitor interface.

Parameters:
  `visitor` - interface to write content to

#### visitClassExecution

    public void visitClassExecution(ExecutionData data)

Description copied from interface: `IExecutionDataVisitor`
Provides execution data for a class.

Specified by:
  `visitClassExecution` in interface `IExecutionDataVisitor`
Parameters:
  `data` - execution data for a class