///* // * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved. // * // * Licensed under the Apache License, Version 2.0 (the "License"); // * you may not use this file except in compliance with the License. // * You may obtain a copy of the License at // * // * http://www.apache.org/licenses/LICENSE-2.0 // * // * Unless required by applicable law or agreed to in writing, software // * distributed under the License is distributed on an "AS IS" BASIS, // * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // * See the License for the specific language governing permissions and // * limitations under the License. // */ // //package org.osgi.framework; // //import java.util.Dictionary; // ///** // * A reference to a service. // * <p> // * <p> // * The Framework returns <code>ServiceReference</code> objects from the // * <code>BundleContext.getServiceReference</code> and // * <code>BundleContext.getServiceReferences</code> methods. // * <p> // * A <code>ServiceReference</code> object may be shared between bundles and // * can be used to examine the properties of the service and to get the service // * object. // * <p> // * Every service registered in the Framework has a unique // * <code>ServiceRegistration</code> object and may have multiple, distinct // * <code>ServiceReference</code> objects referring to it. // * <code>ServiceReference</code> objects associated with a // * <code>ServiceRegistration</code> object have the same <code>hashCode</code> // * and are considered equal (more specifically, their <code>equals()</code> // * method will return <code>true</code> when compared). // * <p> // * If the same service object is registered multiple times, // * <code>ServiceReference</code> objects associated with different // * <code>ServiceRegistration</code> objects are not equal. // * // * @version $Revision: 6374 $ // * @see BundleContext#getServiceReference // * @see BundleContext#getServiceReferences // * @see BundleContext#getService // */ // //public interface ServiceReference<T> { // /** // * Returns the property value to which the specified property key is mapped // * in the properties <code>Dictionary</code> object of the service // * referenced by this <code>ServiceReference</code> object. // * <p> // * <p> // * Property keys are case-insensitive. // * <p> // * <p> // * This method must continue to return property values after the service has // * been unregistered. This is so references to unregistered services (for // * example, <code>ServiceReference</code> objects stored in the log) can // * still be interrogated. // * // * @param key The property key. // * @return The property value to which the key is mapped; <code>null</code> // * if there is no property named after the key. // */ // Object getProperty(String key); // // /** // * Returns an array of the keys in the properties <code>Dictionary</code> // * object of the service referenced by this <code>ServiceReference</code> // * object. // * <p> // * <p> // * This method will continue to return the keys after the service has been // * unregistered. This is so references to unregistered services (for // * example, <code>ServiceReference</code> objects stored in the log) can // * still be interrogated. // * <p> // * <p> // * This method is <i>case-preserving </i>; this means that every key in the // * returned array must have the same case as the corresponding key in the // * properties <code>Dictionary</code> that was passed to the // * {@link BundleContext#registerService(String[], Object, Dictionary)} or // * {@link ServiceRegistration#setProperties} methods. // * // * @return An array of property keys. // */ // String[] getPropertyKeys(); // // /** // * Returns the bundle that registered the service referenced by this // * <code>ServiceReference</code> object. // * <p> // * <p> // * This method must return <code>null</code> when the service has been // * unregistered. This can be used to determine if the service has been // * unregistered. // * // * @return The bundle that registered the service referenced by this // * <code>ServiceReference</code> object; <code>null</code> if that // * service has already been unregistered. // * @see BundleContext#registerService(String[], Object, Dictionary) // */ // Bundle getBundle(); // // /** // * Returns the bundles that are using the service referenced by this // * <code>ServiceReference</code> object. Specifically, this method returns // * the bundles whose usage count for that service is greater than zero. // * // * @return An array of bundles whose usage count for the service referenced // * by this <code>ServiceReference</code> object is greater than // * zero; <code>null</code> if no bundles are currently using that // * service. // * @since 1.1 // */ // Bundle[] getUsingBundles(); //}