| /* |
| * Copyright (c) OSGi Alliance (2008, 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.service.blueprint.reflect; |
| |
| import java.util.Collection; |
| import java.util.List; |
| |
| /** |
| * Metadata for a service to be registered by the Blueprint Container when |
| * enabled. |
| * |
| * <p> |
| * This is specified by the <code>service</code> element. |
| * |
| * @ThreadSafe |
| * @version $Revision$ |
| */ |
| public interface ServiceMetadata extends ComponentMetadata { |
| |
| /** |
| * Do not auto-detect types for advertised service interfaces |
| * |
| * @see #getAutoExport() |
| */ |
| static final int AUTO_EXPORT_DISABLED = 1; |
| |
| /** |
| * Advertise all Java interfaces implemented by the component instance type |
| * as service interfaces. |
| * |
| * @see #getAutoExport() |
| */ |
| static final int AUTO_EXPORT_INTERFACES = 2; |
| |
| /** |
| * Advertise all Java classes in the hierarchy of the component instance |
| * type as service interfaces. |
| * |
| * @see #getAutoExport() |
| */ |
| static final int AUTO_EXPORT_CLASS_HIERARCHY = 3; |
| |
| /** |
| * Advertise all Java classes and interfaces in the component instance type |
| * as service interfaces. |
| * |
| * @see #getAutoExport() |
| */ |
| static final int AUTO_EXPORT_ALL_CLASSES = 4; |
| |
| /** |
| * Return the Metadata for the component to be exported as a service. |
| * |
| * This is specified inline or via the <code>ref</code> attribute of the |
| * service. |
| * |
| * @return The Metadata for the component to be exported as a service. |
| */ |
| Target getServiceComponent(); |
| |
| /** |
| * Return the type names of the interfaces that the service should be |
| * advertised as supporting. |
| * |
| * This is specified in the <code>interface</code> attribute or child |
| * <code>interfaces</code> element of the service. |
| * |
| * @return An immutable List of <code>String</code> for the type names of |
| * the interfaces that the service should be advertised as |
| * supporting. The List is empty if using <code>auto-export</code> |
| * or no interface names are specified for the service. |
| */ |
| List<String> getInterfaces(); |
| |
| /** |
| * Return the auto-export mode for the service. |
| * |
| * This is specified by the <code>auto-export</code> attribute of the |
| * service. |
| * |
| * @return The auto-export mode for the service. |
| * @see #AUTO_EXPORT_DISABLED |
| * @see #AUTO_EXPORT_INTERFACES |
| * @see #AUTO_EXPORT_CLASS_HIERARCHY |
| * @see #AUTO_EXPORT_ALL_CLASSES |
| */ |
| int getAutoExport(); |
| |
| /** |
| * Return the user declared properties to be advertised with the service. |
| * |
| * This is specified by the <code>service-properties</code> element of the |
| * service. |
| * |
| * @return An immutable List of {@link MapEntry} objects for the user |
| * declared properties to be advertised with the service. The List |
| * is empty if no service properties are specified for the service. |
| */ |
| List<MapEntry> getServiceProperties(); |
| |
| /** |
| * Return the ranking value to use when advertising the service. If the |
| * ranking value is zero, the service must be registered without a |
| * <code>service.ranking</code> service property. |
| * |
| * This is specified by the <code>ranking</code> attribute of the service. |
| * |
| * @return The ranking value to use when advertising the service. |
| */ |
| int getRanking(); |
| |
| /** |
| * Return the registration listeners to be notified when the service is |
| * registered and unregistered with the framework. |
| * |
| * This is specified by the <code>registration-listener</code> elements of |
| * the service. |
| * |
| * @return An immutable Collection of {@link RegistrationListener} objects |
| * to be notified when the service is registered and unregistered |
| * with the framework. The Collection is empty if no registration |
| * listeners are specified for the service. |
| */ |
| Collection<RegistrationListener> getRegistrationListeners(); |
| } |