java.lang.Object | |
↳ | com.atlassian.jira.component.ComponentReference<T> |
Known Direct Subclasses
|
@Internal
or @PublicApi
.
Provides a way to obtain a dependency that cannot be injected due to a circular reference
and without having to make numerous explicit calls to ComponentAccessor
.
Note that this is both serializable and thread-safe. However, it will only resolve components
that were registered with the component class provided in the constructor; you can not specify
some other interface as with getComponentOfType(Class)
or reference
OSGi services as with getOSGiComponentInstanceOfType(Class)
. This
is a good thing; you should be using the proper registration key, anyway.
Unlike LazyReference
, the get()
method may be re-entered and multiple threads
are permitted to resolve the reference if necessary. On the other hand, it also cannot deadlock,
which LazyReference
will do (in versions prior to 2.5.0) if a single thread attempts to
re-enter it due to circular logic. Since circular logic using this class will return to the
ComponentAccessor
and eventually to Pico, the container's normal dependency loop
detection is applied at the time the component is requested, which means you'll get told what
the circular path was.
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Dependency references are equal iff they are references for the same
componentClass . | |||||||||||
Produce an object.
| |||||||||||
[Expand]
Inherited Methods | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
From class java.lang.Object | |||||||||||||
From interface
com.atlassian.jira.util.Supplier
| |||||||||||||
From interface
com.atlassian.util.concurrent.Supplier
|
Dependency references are equal iff they are references for the same componentClass
.
Produce an object. Retrieve an instance of the appropriate type. The returned object may or may not be a new instance, depending on the implementation.