/* * 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.apache.tuscany.sca.osgi.remoteserviceadmin; /** * Provide the definition of the constants used in the Remote Services API. * * TODO Should some of the properties in chapter 13 go the framework constants? */ public class RemoteConstants { private RemoteConstants() { } /** * The configuration types supported by this Distribution Provider. * * Services that are suitable for distribution list the configuration types * that describe the configuration information for that service in the * {@link #SERVICE_EXPORTED_CONFIGS} or {@link #SERVICE_IMPORTED_CONFIGS} * property. * * A distribution provider must register a service that has this property * and enumerate all configuration types that it supports. * * The type of this property String+ * * @see #SERVICE_EXPORTED_CONFIGS * @see #SERVICE_IMPORTED_CONFIGS */ public final static String REMOTE_CONFIGS_SUPPORTED = "remote.configs.supported"; /** * Service property that lists the intents supported by the distribution * provider. * * Each distribution provider must register a service that has this property * and enumerate all the supported intents, having any qualified intents * expanded. * * The value of this property is of type String+. * * @see #SERVICE_INTENTS * @see #SERVICE_EXPORTED_INTENTS * @see #SERVICE_EXPORTED_INTENTS_EXTRA */ public final static String REMOTE_INTENTS_SUPPORTED = "remote.intents.supported"; /** * Defines the interfaces under which this service can be exported. * * This list must be a subset of the types listed in the objectClass service * property. The single value of an asterisk ('*' \u002A) indicates all * interfaces in the registration's objectClass property (not classes). It * is highly recommended to only export interfaces and not concrete classes * due to the complexity of creating proxies for some type of classes. * * The value of this property is of type String+. */ public final static String SERVICE_EXPORTED_INTERFACES = "service.exported.interfaces"; /** * A list of intents that the distribution provider must implement to * distribute the service. Intents listed in this property are reserved for * intents that are critical for the code to function correctly, for * example, ordering of messages. These intents should not be configurable. * * The value of this property is of type String+. */ public final static String SERVICE_EXPORTED_INTENTS = "service.exported.intents"; /** * Extra intents configured in addition to the the intents specified in * {@link #SERVICE_EXPORTED_INTENTS}. * * These intents are merged with the service.exported.intents and therefore * have the same semantics. They are extra, so that the * {@link #SERVICE_EXPORTED_INTENTS} can be set by the bundle developer and * this property is then set by the administrator/deployer. Bundles should * make this property configurable, for example through the Configuration * Admin service. * * The value of this property is of type String+. */ public final static String SERVICE_EXPORTED_INTENTS_EXTRA = "service.exported.intents.extra"; /** * A list of configuration types that should be used to export the service. * * Configuration types can be synonymous or alternatives. * In principle, a distribution provider should create an endpoint for each * recognized configuration type, the deployer is responsible that synonyms * do not clash. * * Each configuration type has an associated specification that describes * how the configuration data for the exported service is represented in an * OSGi framework. * * The value of this property is of type String+. */ public final static String SERVICE_EXPORTED_CONFIGS = "service.exported.configs"; /** * Must be set by a distribution provider to true when it * registers the end-point proxy as an imported service. Can be used by a * bundle to prevent it from getting an imported service. * * The value of this property is not defined, setting it is sufficient. */ public final static String SERVICE_IMPORTED = "service.imported"; /** * The configuration type used to import this services, as described in * {@link #SERVICE_EXPORTED_CONFIGS}. Any associated properties for this * configuration types must be properly mapped to the importing system. For * example, a URL in these properties must point to a valid resource when * used in the importing framework. Configuration types in this property * must be synonymous. * * The value of this property is of type String+. */ public final static String SERVICE_IMPORTED_CONFIGS = "service.imported.configs"; /** * A list of intents that this service implements. This property has dual * purpose. A bundle can use this service property to notify the * distribution provider that these intents are already implemented by the * exported service object. For an imported service, a distribution provider * must use this property to convey the combined intents of the exporting * service and the intents that the distribution providers add. To export a * service, a distribution provider must recognize all these intents and * expand any qualified intents. * * The value of this property is of type String+. */ public final static String SERVICE_INTENTS = "service.intents"; /** * The property key for the endpoint URI. This is a unique id for an * endpoint following the URI syntax. As far as this specification is * concerned, this unique id is opaque. */ public final static String SERVICE_REMOTE_URI = "service.remote.uri"; /** * The property key for the endpoint service id. This is a unique id for a * service based on the framework id '.' service id or another model. As far as this specification is * concerned, this unique id is opaque. */ public final static String SERVICE_REMOTE_ID = "service.remote.id"; /** * The property key for the endpoint service id. This is a unique id for a * service based on the framework id '.' service id or another model. As far as this specification is * concerned, this unique id is opaque. */ public final static String SERVICE_REMOTE_FRAMEWORK_UUID = "service.remote.framework.id"; }