Package io.opentelemetry.sdk.internal
Class ComponentRegistry<V>
- java.lang.Object
-
- io.opentelemetry.sdk.internal.ComponentRegistry<V>
-
- Type Parameters:
V
- the type of the registered value.
public final class ComponentRegistry<V> extends java.lang.Object
Component (tracer, meter, etc) registry class for all the provider classes (TracerProvider, MeterProvider, etc.).Components are identified by name, version, and schema. Name is required, but version and schema are optional. Therefore, we have 4 possible scenarios for component keys:
- Only name is provided, represented by
componentByName
- Name and version are provided, represented by
componentByNameAndVersion
- Name and schema are provided, represented by
componentByNameAndSchema
- Name, version and schema are provided, represented by
componentByNameVersionAndSchema
This class is internal and is hence not for public use. Its APIs are unstable and can change at any time.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<V>
allComponents
private java.util.Map<java.lang.String,V>
componentByName
private java.util.Map<java.lang.String,java.util.Map<java.lang.String,V>>
componentByNameAndSchema
private java.util.Map<java.lang.String,java.util.Map<java.lang.String,V>>
componentByNameAndVersion
private java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,V>>>
componentByNameVersionAndSchema
private java.util.function.Function<InstrumentationScopeInfo,V>
factory
private java.lang.Object
lock
-
Constructor Summary
Constructors Constructor Description ComponentRegistry(java.util.function.Function<InstrumentationScopeInfo,V> factory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private V
buildComponent(InstrumentationScopeInfo instrumentationScopeInfo)
V
get(java.lang.String name, java.lang.String version, java.lang.String schemaUrl, Attributes attributes)
Returns the component associated with thename
,version
, andschemaUrl
.java.util.Collection<V>
getComponents()
Returns aCollection
view of the registered components.
-
-
-
Field Detail
-
componentByName
private final java.util.Map<java.lang.String,V> componentByName
-
componentByNameAndVersion
private final java.util.Map<java.lang.String,java.util.Map<java.lang.String,V>> componentByNameAndVersion
-
componentByNameAndSchema
private final java.util.Map<java.lang.String,java.util.Map<java.lang.String,V>> componentByNameAndSchema
-
componentByNameVersionAndSchema
private final java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,V>>> componentByNameVersionAndSchema
-
lock
private final java.lang.Object lock
-
allComponents
private final java.util.Set<V> allComponents
-
factory
private final java.util.function.Function<InstrumentationScopeInfo,V> factory
-
-
Constructor Detail
-
ComponentRegistry
public ComponentRegistry(java.util.function.Function<InstrumentationScopeInfo,V> factory)
-
-
Method Detail
-
get
public V get(java.lang.String name, @Nullable java.lang.String version, @Nullable java.lang.String schemaUrl, Attributes attributes)
Returns the component associated with thename
,version
, andschemaUrl
.Attributes
are not part of component identity. Behavior is undefined when differentAttributes
are provided wherename
,version
, andschemaUrl
are identical.
-
buildComponent
private V buildComponent(InstrumentationScopeInfo instrumentationScopeInfo)
-
getComponents
public java.util.Collection<V> getComponents()
Returns aCollection
view of the registered components.- Returns:
- a
Collection
view of the registered components.
-
-