Interface ServiceReference<S>
- Type Parameters:
S- Type of Service.
- All Superinterfaces:
Comparable<Object>
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.
- Author:
- $Id: a56f8df70e8c74a76a1ef02b714b4612bc064ecc $
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionintCompares thisServiceReferencewith the specifiedServiceReferencefor order.Returns the bundle that registered the service referenced by thisServiceReferenceobject.getProperty(String key) Returns the property value to which the specified property key is mapped in the propertiesDictionaryobject of the service referenced by thisServiceReferenceobject.String[]Returns an array of the keys in the propertiesDictionaryobject of the service referenced by thisServiceReferenceobject.Bundle[]Returns the bundles that are using the service referenced by thisServiceReferenceobject.booleanisAssignableTo(Bundle bundle, String className) Tests if the bundle that registered the service referenced by thisServiceReferenceand the specified bundle use the same source for the package of the specified class name.
-
Method Details
-
getProperty
Returns the property value to which the specified property key is mapped in the propertiesDictionaryobject of the service referenced by thisServiceReferenceobject.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,
ServiceReferenceobjects stored in the log) can still be interrogated.- Parameters:
key- The property key.- Returns:
- The property value to which the key is mapped;
nullif there is no property named after the key.
-
getPropertyKeys
String[] getPropertyKeys()Returns an array of the keys in the propertiesDictionaryobject of the service referenced by thisServiceReferenceobject.This method will continue to return the keys after the service has been unregistered. This is so references to unregistered services (for example,
ServiceReferenceobjects 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
Dictionarythat was passed to theBundleContext.registerService(String[],Object,Dictionary)orServiceRegistration.setProperties(Dictionary)methods.- Returns:
- An array of property keys.
-
getBundle
Bundle getBundle()Returns the bundle that registered the service referenced by thisServiceReferenceobject.This method must return
nullwhen the service has been unregistered. This can be used to determine if the service has been unregistered.- Returns:
- The bundle that registered the service referenced by this
ServiceReferenceobject;nullif that service has already been unregistered. - See Also:
-
getUsingBundles
Bundle[] getUsingBundles()Returns the bundles that are using the service referenced by thisServiceReferenceobject. Specifically, this method returns the bundles whose usage count for that service is greater than zero.- Returns:
- An array of bundles whose usage count for the service referenced
by this
ServiceReferenceobject is greater than zero;nullif no bundles are currently using that service. - Since:
- 1.1
-
isAssignableTo
Tests if the bundle that registered the service referenced by thisServiceReferenceand the specified bundle use the same source for the package of the specified class name.This method performs the following checks:
- Get the package name from the specified class name.
- For the bundle that registered the service referenced by this
ServiceReference(registrant bundle); find the source for the package. If no source is found then returntrueif the registrant bundle is equal to the specified bundle; otherwise returnfalse. - If the package source of the registrant bundle is equal to the
package source of the specified bundle then return
true; otherwise returnfalse.
- Parameters:
bundle- TheBundleobject to check.className- The class name to check.- Returns:
trueif the bundle which registered the service referenced by thisServiceReferenceand the specified bundle use the same source for the package of the specified class name. Otherwisefalseis returned.- Throws:
IllegalArgumentException- If the specifiedBundlewas not created by the same framework instance as thisServiceReference.- Since:
- 1.3
-
compareTo
Compares thisServiceReferencewith the specifiedServiceReferencefor order.If this
ServiceReferenceand the specifiedServiceReferencehave the sameservice idthey are equal. ThisServiceReferenceis less than the specifiedServiceReferenceif it has a lowerservice rankingand greater if it has a higher service ranking. Otherwise, if thisServiceReferenceand the specifiedServiceReferencehave the sameservice ranking, thisServiceReferenceis less than the specifiedServiceReferenceif it has a higherservice idand greater if it has a lower service id.- Specified by:
compareToin interfaceComparable<S>- Parameters:
reference- TheServiceReferenceto be compared.- Returns:
- Returns a negative integer, zero, or a positive integer if this
ServiceReferenceis less than, equal to, or greater than the specifiedServiceReference. - Throws:
IllegalArgumentException- If the specifiedServiceReferencewas not created by the same framework instance as thisServiceReference.- Since:
- 1.4
-