| /******************************************************************************* |
| * Copyright (c) 2010-2011 Composent, Inc. and others. All rights reserved. This |
| * program and the accompanying materials are made available under the terms of |
| * the Eclipse Public License v1.0 which accompanies this distribution, and is |
| * available at http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Composent, Inc. - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.ecf.osgi.services.remoteserviceadmin; |
| |
| import org.eclipse.ecf.core.IContainerFactory; |
| import org.eclipse.ecf.core.security.IConnectContext; |
| import org.eclipse.ecf.discovery.IServiceInfo; |
| import org.eclipse.ecf.discovery.identity.IServiceIDFactory; |
| import org.eclipse.ecf.discovery.identity.IServiceTypeID; |
| import org.eclipse.ecf.remoteservice.IRemoteService; |
| |
| /** |
| * ECF Remote Service Admin RemoteConstants. These are constants for ECF's RSA |
| * implementation-specific meta-data. For OSGi Remote constant see |
| * {@link org.osgi.service.remoteserviceadmin.RemoteConstants} and the <a |
| * href="http://www.osgi.org/download/r4v42/r4.enterprise.pdf">OSGI 4.2 Remote |
| * Service Admin specification (chap 122)</a>. |
| * |
| * @noinstantiate This class is not intended to be instantiated by clients. |
| * @noextend This class is not intended to be subclassed by clients. |
| */ |
| public final class RemoteConstants { |
| |
| private RemoteConstants() { |
| // not instantiable |
| } |
| |
| /** |
| * ECF discovery service type for Remote Service Admin. All ECF remote |
| * services published by Remote Service Admin advertisers should have this |
| * value as one of the entries in the list returned from |
| * {@link IServiceTypeID#getServices()}. |
| */ |
| public static final String DISCOVERY_SERVICE_TYPE = "ecfosgirsvc"; //$NON-NLS-1$ |
| /** |
| * ECF discovery scope property. Value type is String+. If set, the value |
| * will be used by the {@link IServiceInfoFactory} during |
| * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)} |
| * to create an {@link IServiceTypeID} via |
| * {@link IServiceIDFactory#createServiceTypeID(org.eclipse.ecf.core.identity.Namespace, String[], String[], String[], String)} |
| * . The scopes value determines the third parameter. If not explicitly set, |
| * the {@link IServiceTypeID#DEFAULT_SCOPE} is used. |
| */ |
| public static final String DISCOVERY_SCOPE = "ecf.endpoint.discovery.scope"; //$NON-NLS-1$ |
| /** |
| * ECF discovery protocols property. Value type is String+. If set, the |
| * value will be used by the {@link IServiceInfoFactory} during |
| * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)} |
| * to create an {@link IServiceTypeID} via |
| * {@link IServiceIDFactory#createServiceTypeID(org.eclipse.ecf.core.identity.Namespace, String[], String[], String[], String)} |
| * . The protocols value determines the fourth parameter. If not explicitly |
| * set, the {@link IServiceTypeID#DEFAULT_PROTO} is used. |
| */ |
| public static final String DISCOVERY_PROTOCOLS = "ecf.endpoint.discovery.protocols"; //$NON-NLS-1$ |
| /** |
| * ECF discovery naming authority property. Value type is String. If set, |
| * the value will be used by the {@link IServiceInfoFactory} during |
| * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)} |
| * to create an {@link IServiceTypeID} via |
| * {@link IServiceIDFactory#createServiceTypeID(org.eclipse.ecf.core.identity.Namespace, String[], String[], String[], String)} |
| * . The protocols value determines the fifth parameter. If not explicitly |
| * set, the {@link IServiceTypeID#DEFAULT_NA} is used. |
| */ |
| public static final String DISCOVERY_NAMING_AUTHORITY = "ecf.endpoint.discovery.namingauthority"; //$NON-NLS-1$ |
| /** |
| * ECF discovery service name property. Value type is String. If set, the |
| * value will be used by the {@link IServiceInfoFactory} during |
| * {@link IServiceInfoFactory#createServiceInfo(org.eclipse.ecf.discovery.IDiscoveryAdvertiser, EndpointDescription)} |
| * to create an {@link IServiceInfo} with a given name. The default is a |
| * globally unique identifier. Note that if this value is explicitly set, |
| * care should be taken to not have the name conflict with other remote |
| * service names. |
| */ |
| public static final String DISCOVERY_SERVICE_NAME = "ecf.endpoint.discovery.servicename"; //$NON-NLS-1$ |
| /** |
| * ECF service name default prefix. If the DISCOVERY_SERVICE_NAME is |
| * <b>not</b> set, this prefix will be the precede the unique identifier. |
| */ |
| public static final String DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX = "osgirsvc_"; //$NON-NLS-1$ |
| /** |
| * ECF {@link EndpointDescription} property (with value of type |
| * String) that defines the unique |
| * {@link org.eclipse.ecf.core.identity.Namespace} name. If present in the |
| * {@link EndpointDescription}, the value will be used to create the |
| * containerID for accessing a remote service. The Namespace name is |
| * optional because typically the ID protocol specifier (e.g. 'ecftcp' in ID |
| * with name: 'ecftcp://localhost:3282/server') can be used to unambiguously |
| * determine the appropriate {@link org.eclipse.ecf.core.identity.Namespace} |
| * used to create the container ID for remote service import. |
| */ |
| public static final String ENDPOINT_CONTAINER_ID_NAMESPACE = "ecf.endpoint.id.ns"; //$NON-NLS-1$ |
| /** |
| * ECF {@link EndpointDescription} property (with value of type String) |
| * that defines the ecf endpoint id (typically the container id). |
| * @since 4.0 |
| */ |
| public static final String ENDPOINT_ID = "ecf.endpoint.id"; //$NON-NLS-1$ |
| /** |
| * ECF {@link EndpointDescription} property (with value of type Long) |
| * that defines a service timestamp set upon initial export of the remote service. |
| * @since 4.0 |
| */ |
| public static final String ENDPOINT_TIMESTAMP = "ecf.endpoint.ts"; //$NON-NLS-1$ |
| /** |
| * Optional ECF {@link EndpointDescription} property (with value of type |
| * String) that defines a connect target ID. If set/non-<code>null</code>, |
| * this property can be used by remote service consumers to connect to a |
| * specific container, and access a remote service exposed by some |
| * <b>other</b> member of the group. |
| */ |
| public static final String ENDPOINT_CONNECTTARGET_ID = "ecf.endpoint.connecttarget.id"; //$NON-NLS-1$ |
| /** |
| * Optional ECF {@link EndpointDescription} property (with value of type |
| * String+) that defines one or more IDs used for filtering remote service |
| * references during |
| * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)} |
| * . |
| */ |
| public static final String ENDPOINT_IDFILTER_IDS = "ecf.endpoint.idfilter.ids"; //$NON-NLS-1$ |
| /** |
| * Optional ECF {@link EndpointDescription} property (with value of type |
| * String), that defines a remote services properties filter used during |
| * {@link RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)} |
| * . |
| */ |
| public static final String ENDPOINT_REMOTESERVICE_FILTER = "ecf.endpoint.rsfilter"; //$NON-NLS-1$ |
| |
| /** |
| * Container factory arguments for exported remote service hosts. If |
| * specified as a service property upon remote service registration, this |
| * property allows ECF containers to be initialized and configured upon |
| * creation during the call to |
| * {@link HostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference, String[], String[], String[])} |
| * . The type of the value may be String, ID, or Object[]. The |
| * IContainerFactory.createContainer method is then selected based upon the |
| * type of the value...i.e. |
| * {@link IContainerFactory#createContainer(org.eclipse.ecf.core.ContainerTypeDescription, String)} |
| * , |
| * {@link IContainerFactory#createContainer(org.eclipse.ecf.core.identity.ID)} |
| * , or {@link IContainerFactory#createContainer(String, Object[])}, and the |
| * value is passed in for container creation. |
| */ |
| public static final String SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS = "ecf.exported.containerfactoryargs"; //$NON-NLS-1$ |
| /** |
| * Container connect context for exported remote service hosts. If specified |
| * as a service property for remote service export, this property allows ECF |
| * containers to have given a connect context for authentication upon |
| * container connection by |
| * {@link HostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference, String[], String[], String[])} |
| * . The type of the value is {@link IConnectContext}. |
| */ |
| public static final String SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT = "ecf.exported.containerconnectcontext"; //$NON-NLS-1$ |
| /** |
| * Container ID of the target host container for remote service export. If |
| * specified as a service property for remote service export, this property |
| * is used to match against the set of available containers in |
| * {@link HostContainerSelector#selectHostContainers(org.osgi.framework.ServiceReference, String[], String[], String[])} |
| * . The type of the value is {@link ID}. |
| */ |
| public static final String SERVICE_EXPORTED_CONTAINER_ID = "ecf.exported.containerid"; //$NON-NLS-1$ |
| |
| /** |
| * Service property marking the service for async proxy export. It defines the |
| * async interfaces under which this service will be exported on the remote |
| * proxy. This list must be a |
| * subset of the types service was exported (i.e. subset of interfaces specified |
| * by #{@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES}. The single |
| * value of an asterisk ("*", \u002A) indicates all the |
| * interface types under which the service was exported. |
| * <p> |
| * The interfaces in the String[] can either be |
| * <ol> |
| * <li>The same fully qualified name as an interface |
| * in the #{@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_EXPORTED_INTERFACES} property</li> |
| * <li>The fully qualified name of an interface that follows the asynchronous proxy conventions to |
| * match with one of the existing exported types. |
| * </li> |
| * |
| * <p> |
| * This property may be supplied in the {@code properties} |
| * {@code Dictionary} object passed to the |
| * {@code BundleContext.registerService} method. The value of this property |
| * must be of type {@code String}, {@code String[]}, or {@code Collection} |
| * of {@code String}. |
| * |
| * @since 4.0 |
| */ |
| public static final String SERVICE_EXPORTED_ASYNC_INTERFACES = "ecf.exported.async.interfaces"; //$NON-NLS-1$ |
| |
| /** |
| * Allows exporting ECF containers to determine the type of value associated |
| * with the |
| * {@link org.osgi.service.remoteserviceadmin.RemoteConstants#SERVICE_IMPORTED} |
| * property on the OSGi remote service consumer. For ECF, the default value |
| * type is {@link IRemoteService}. If set to some other value (e.g. |
| * {@link Boolean} by the exporting host container, then consumers can use |
| * the SERVICE_IMPORTED value appropriately. |
| */ |
| public static final String SERVICE_IMPORTED_VALUETYPE = "ecf.service.imported.valuetype"; //$NON-NLS-1$ |
| /** |
| * This property is set on the remote service proxy during |
| * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)} |
| * , before local service proxy registration. It's String value is set to |
| * the value returned from |
| * {@link org.osgi.service.remoteserviceadmin.EndpointDescription#getId()}. |
| * It allows those accessing the remote service proxy to get information |
| * about the endpoint id. |
| */ |
| public static final String SERVICE_IMPORTED_ENDPOINT_ID = org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID; |
| |
| /** |
| * This property is set on the remote service proxy during |
| * {@link org.osgi.service.remoteserviceadmin.RemoteServiceAdmin#importService(org.osgi.service.remoteserviceadmin.EndpointDescription)} |
| * , before local service proxy registration. It's Long value is set to the |
| * value returned from |
| * {@link org.osgi.service.remoteserviceadmin.EndpointDescription#getServiceId()} |
| * . It allows those accessing the remote service proxy to get information |
| * about the endpoint remote service id. |
| */ |
| public static final String SERVICE_IMPORTED_ENDPOINT_SERVICE_ID = org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID; |
| } |