All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.osgi.framework.ServiceRegistration Maven / Gradle / Ivy

There is a newer version: 7.0.5
Show newest version
/*
 * 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 registered service.
 * 
 * 

* The Framework returns a ServiceRegistration object when a * BundleContext.registerService method invocation is successful. * The ServiceRegistration object is for the private use of the * registering bundle and should not be shared with other bundles. *

* The ServiceRegistration object may be used to update the * properties of the service or to unregister the service. * * @see BundleContext#registerService(String[],Object,Dictionary) * @ThreadSafe * @version $Revision: 6361 $ */ public interface ServiceRegistration { /** * Returns a ServiceReference object for a service being * registered. *

* The ServiceReference object may be shared with other * bundles. * * @throws IllegalStateException If this * ServiceRegistration object has already been * unregistered. * @return ServiceReference object. */ public ServiceReference getReference(); /** * Updates the properties associated with a service. * *

* The {@link Constants#OBJECTCLASS} and {@link Constants#SERVICE_ID} 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: *

    *
  1. The service's properties are replaced with the provided properties. *
  2. A service event of type {@link ServiceEvent#MODIFIED} is fired. *
* * @param properties The properties for this service. See {@link Constants} * for a list of standard service property keys. Changes should not * be made to this object after calling this method. To update the * service's properties this method should be called again. * * @throws IllegalStateException If this ServiceRegistration * object has already been unregistered. * @throws IllegalArgumentException If properties contains * case variants of the same key name. */ public void setProperties(Dictionary properties); /** * Unregisters a service. Remove a ServiceRegistration object * from the Framework service registry. All ServiceReference * objects associated with this ServiceRegistration object * can no longer be used to interact with the service once unregistration is * complete. * *

* The following steps are required to unregister a service: *

    *
  1. The service is removed from the Framework service registry so that * it can no longer be obtained. *
  2. A service event of type {@link ServiceEvent#UNREGISTERING} is fired * so that bundles using this service can release their use of the service. * Once delivery of the service event is complete, the * ServiceReference objects for the service may no longer be * used to get a service object for the service. *
  3. For each bundle whose use count for this service is greater than * zero:
    * The bundle's use count for this service is set to zero.
    * If the service was registered with a {@link ServiceFactory} object, the * ServiceFactory.ungetService method is called to release * the service object for the bundle. *
* * @throws IllegalStateException If this * ServiceRegistration object has already been * unregistered. * @see BundleContext#ungetService * @see ServiceFactory#ungetService */ public void unregister(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy