S
- Type of Service.@ProviderType public interface ServiceReference<S> extends java.lang.Comparable<java.lang.Object>, BundleReference
The Framework returns ServiceReference
objects from the
BundleContext.getServiceReference
and
BundleContext.getServiceReferences
methods.
A ServiceReference
object may be shared between bundles and can be
used to examine the properties of the service and to get the service object.
Every service registered in the Framework has a unique
ServiceRegistration
object and may have multiple, distinct
ServiceReference
objects referring to it. ServiceReference
objects associated with a ServiceRegistration
object have the same
hashCode
and are considered equal (more specifically, their
equals()
method will return true
when compared).
If the same service object is registered multiple times,
ServiceReference
objects associated with different
ServiceRegistration
objects are not equal.
BundleContext.getServiceReference(Class)
,
BundleContext.getServiceReference(String)
,
BundleContext.getServiceReferences(Class, String)
,
BundleContext.getServiceReferences(String, String)
,
BundleContext.getService(ServiceReference)
,
BundleContext.getServiceObjects(ServiceReference)
Modifier and Type | Method and Description |
---|---|
<A> A |
adapt(java.lang.Class<A> type)
Adapt this
ServiceReference object to the specified type. |
int |
compareTo(java.lang.Object reference)
Compares this
ServiceReference with the specified
ServiceReference for order. |
Bundle |
getBundle()
Returns the bundle that registered the service referenced by this
ServiceReference object. |
java.util.Dictionary<java.lang.String,java.lang.Object> |
getProperties()
Returns a copy of the properties of the service referenced by this
ServiceReference object. |
java.lang.Object |
getProperty(java.lang.String key)
Returns the property value to which the specified property key is mapped
in the properties
Dictionary object of the service referenced by
this ServiceReference object. |
java.lang.String[] |
getPropertyKeys()
Returns an array of the keys in the properties
Dictionary object
of the service referenced by this ServiceReference object. |
Bundle[] |
getUsingBundles()
Returns the bundles that are using the service referenced by this
ServiceReference object. |
boolean |
isAssignableTo(Bundle bundle,
java.lang.String className)
Tests if the bundle that registered the service referenced by this
ServiceReference and the specified bundle use the same source for
the package of the specified class name. |
java.lang.Object getProperty(java.lang.String key)
Dictionary
object of the service referenced by
this ServiceReference
object.
Property keys are case-insensitive.
This method must continue to return property values after the service has
been unregistered. This is so references to unregistered services (for
example, ServiceReference
objects stored in the log) can still be
interrogated.
key
- The property key.null
if
there is no property named after the key.java.lang.String[] getPropertyKeys()
Dictionary
object
of the service referenced by this ServiceReference
object.
This method will continue to return the keys after the service has been
unregistered. This is so references to unregistered services (for
example, ServiceReference
objects stored in the log) can still be
interrogated.
This method is case-preserving ; this means that every key in the
returned array must have the same case as the corresponding key in the
properties Dictionary
that was passed to the
BundleContext.registerService(String[],Object,Dictionary)
or
ServiceRegistration.setProperties(Dictionary)
methods.
Bundle getBundle()
ServiceReference
object.
This method must return null
when the service has been
unregistered. This can be used to determine if the service has been
unregistered.
getBundle
in interface BundleReference
ServiceReference
object; null
if that service has
already been unregistered.BundleContext.registerService(String[],Object,Dictionary)
Bundle[] getUsingBundles()
ServiceReference
object. Specifically, this method returns the
bundles whose usage count for that service is greater than zero.ServiceReference
object is greater than zero;
null
if no bundles are currently using that service.boolean isAssignableTo(Bundle bundle, java.lang.String className)
ServiceReference
and the specified bundle use the same source for
the package of the specified class name.
This method performs the following checks:
ServiceReference
(registrant bundle)
return true
.true
(use of reflection is assumed by
the specified bundle).true
if the package source
equals the package source of the specified bundle; otherwise return
false
.ServiceFactory
and the factory implementation is not
from the registrant bundle return true
; otherwise attempt to find
the package source based on the service object class. If the package
source is found and is equal to package source of the specified bundle
return true
; otherwise return false
.bundle
- The Bundle
object to check.className
- The class name to check.true
if the bundle which registered the service
referenced by this ServiceReference
and the specified
bundle use the same source for the package of the specified class
name. Otherwise false
is returned.java.lang.IllegalArgumentException
- If the specified Bundle
was not
created by the same framework instance as this
ServiceReference
.int compareTo(java.lang.Object reference)
ServiceReference
with the specified
ServiceReference
for order.
If this ServiceReference
and the specified
ServiceReference
have the same service id
they are equal. This ServiceReference
is less than
the specified ServiceReference
if it has a lower
service ranking
and greater if it has a
higher service ranking. Otherwise, if this ServiceReference
and
the specified ServiceReference
have the same
service ranking
, this
ServiceReference
is less than the specified
ServiceReference
if it has a higher service id
and greater if it has a lower service id.
compareTo
in interface java.lang.Comparable<java.lang.Object>
reference
- The ServiceReference
to be compared.ServiceReference
is less than, equal to, or greater than
the specified ServiceReference
.java.lang.IllegalArgumentException
- If the specified
ServiceReference
was not created by the same framework
instance as this ServiceReference
.java.util.Dictionary<java.lang.String,java.lang.Object> getProperties()
ServiceReference
object.
This method will continue to return the properties after the service has
been unregistered. This is so references to unregistered services (for
example, ServiceReference
objects stored in the log) can still be
interrogated.
The returned Dictionary
object:
Dictionary
that was passed to the
BundleContext.registerService(String[],Object,Dictionary)
or
ServiceRegistration.setProperties(Dictionary)
methods.ServiceRegistration.setProperties(Dictionary)
must be called to
modify the properties of the service.ServiceReference
object<A> A adapt(java.lang.Class<A> type)
ServiceReference
object to the specified type.
Adapting this ServiceReference
object to the specified type may
require certain checks, including security checks, to succeed. If a check
does not succeed, then this ServiceReference
object cannot be
adapted and null
is returned.
A
- The type to which this ServiceReference
object is to
be adapted.type
- Class object for the type to which this
ServiceReference
object is to be adapted.ServiceReference
object has been adapted or null
if this ServiceReference
object cannot be adapted to the
specified type.java.lang.SecurityException
- If the caller does not have the appropriate
AdaptPermission[type,this,ADAPT]
, and the Java
Runtime Environment supports permissions.Copyright © OSGi Alliance (2000, 2020). All Rights Reserved. Licensed under the OSGi Specification License, Version 2.0