/* * Copyright (c) OSGi Alliance (2000, 2014). 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; import org.osgi.annotation.versioning.ProviderType; /** * A registered service. * *
* The Framework returns a {@code ServiceRegistration} object when a * {@code BundleContext.registerService} method invocation is successful. The * {@code ServiceRegistration} object is for the private use of the registering * bundle and should not be shared with other bundles. *
* The {@code ServiceRegistration} object may be used to update the properties
* of the service or to unregister the service.
*
* @param Type of Service.
* @see BundleContext#registerService(String[],Object,Dictionary)
* @ThreadSafe
* @author $Id$
*/
@ProviderType
public interface ServiceRegistration {
/**
* Returns a {@code ServiceReference} object for a service being registered.
*
* The {@code ServiceReference} object may be shared with other bundles.
*
* @throws IllegalStateException If this {@code ServiceRegistration} object
* has already been unregistered.
* @return {@code ServiceReference} object.
*/
public ServiceReference getReference();
/**
* Updates the properties associated with a service.
*
*
* The {@link Constants#OBJECTCLASS}, {@link Constants#SERVICE_BUNDLEID}, * {@link Constants#SERVICE_ID} and {@link Constants#SERVICE_SCOPE} keys * cannot be modified by this method. These values are set by the Framework * when the service is registered in the OSGi environment. * *
* The following steps are required to modify service properties: *
* The following steps are required to unregister a service: *