diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-12-27 10:50:45 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-12-27 10:50:45 +0000 |
commit | 1c0d8a7ab823150bdbece285e71cd6f414621cfc (patch) | |
tree | 74502a44ff34296d54e22b9a1b53950badcfd0af /sca-java-2.x/branches/2.0-Beta2/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java | |
parent | c5e532242f6f7f4bcc6938edd79022da2cb14cc3 (diff) |
Start branch for beta2 release
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1053042 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r-- | sca-java-2.x/branches/2.0-Beta2/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java new file mode 100644 index 0000000000..ff889f8577 --- /dev/null +++ b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/OSGiProperty.java @@ -0,0 +1,242 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.implementation.osgi; + +import javax.xml.namespace.QName; + +/** + * <tuscany:osgi.property> + */ +public interface OSGiProperty { + String NAME = "name"; + String TYPE = "type"; + String VALUE = "value"; + QName PROPERTY_QNAME = new QName(OSGiImplementation.SCA11_TUSCANY_NS, "osgi.property"); + + String REMOTE_CONFIG_SCA = "org.osgi.sca"; + String SCA_BINDINGS = "org.osgi.sca.bindings"; + String SCA_REFERENCE = "sca.reference"; + String SCA_SERVICE = "sca.service"; + String SCA_REFERENCE_BINDING = "sca.reference.binding"; + String SCA_SERVICE_BINDING = "sca.service.binding"; + + /** + * Service property identifying the configuration types supported by a + * distribution provider. Registered by the distribution provider on one of + * its services to indicate the supported configuration types. + * <p> + * The value of this property must be of type <code>String</code>, + * <code>String[]</code>, or <code>Collection<String></code>. + */ + public static final String REMOTE_CONFIGS_SUPPORTED = "remote.configs.supported"; + + /** + * Service property identifying the intents supported by a distribution + * provider. Registered by the distribution provider on one of its services + * to indicate the vocabulary of implemented intents. + * + * <p> + * The value of this property must be of type <code>String</code>, + * <code>String[]</code>, or <code>Collection<String></code>. + */ + public static final String REMOTE_INTENTS_SUPPORTED = "remote.intents.supported"; + + /** + * Service property identifying the configuration types that should be used + * to export the service. Each configuration type represents the + * configuration parameters for an endpoint. A distribution provider should + * create an endpoint for each configuration type that it supports. + * + * <p> + * This property may be supplied in the <code>properties</code> + * <code>Dictionary</code> object passed to the + * <code>BundleContext.registerService</code> method. The value of this + * property must be of type <code>String</code>, <code>String[]</code>, or + * <code>Collection<String></code>. + */ + public static final String SERVICE_EXPORTED_CONFIGS = "service.exported.configs"; + + /** + * Service property identifying the 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. + * + * <p> + * This property may be supplied in the <code>properties</code> + * <code>Dictionary</code> object passed to the + * <code>BundleContext.registerService</code> method. The value of this + * property must be of type <code>String</code>, <code>String[]</code>, or + * <code>Collection<String></code>. + */ + public static final String SERVICE_EXPORTED_INTENTS = "service.exported.intents"; + + /** + * Service property identifying the extra intents that the distribution + * provider must implement to distribute the service. This property is + * merged with the <code>service.exported.intents</code> property before the + * distribution provider interprets the listed intents; it has therefore the + * same semantics but the property should be configurable so the + * administrator can choose the intents based on the topology. Bundles + * should therefore make this property configurable, for example through the + * Configuration Admin service. + * + * <p> + * This property may be supplied in the <code>properties</code> + * <code>Dictionary</code> object passed to the + * <code>BundleContext.registerService</code> method. The value of this + * property must be of type <code>String</code>, <code>String[]</code>, or + * <code>Collection<String></code>. + */ + public static final String SERVICE_EXPORTED_INTENTS_EXTRA = "service.exported.intents.extra"; + + /** + * Service property marking the service for export. It defines the + * interfaces under which this service can be exported. This list must be a + * subset of the types under which the service was registered. The single + * value of an asterisk ("*", \u002A) indicates all the + * interface types under which the service was registered excluding the + * non-interface types. It is strongly recommended to only export interface + * types and not concrete classes due to the complexity of creating proxies + * for some type of concrete classes. + * + * <p> + * This property may be supplied in the <code>properties</code> + * <code>Dictionary</code> object passed to the + * <code>BundleContext.registerService</code> method. The value of this + * property must be of type <code>String</code>, <code>String[]</code>, or + * <code>Collection<String></code>. + */ + public static final String SERVICE_EXPORTED_INTERFACES = "service.exported.interfaces"; + + /** + * Service property identifying the service as imported. This service + * property must be set by a distribution provider to any value when it + * registers the endpoint proxy as an imported service. A bundle can use + * this property to filter out imported services. + * + * <p> + * The value of this property may be of any type. + */ + public static final String SERVICE_IMPORTED = "service.imported"; + + /** + * Service property identifying the configuration types used to import the + * service. 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. If multiple configuration types are listed in this property, + * then they must be synonyms for exactly the same remote endpoint that is + * used to export this service. + * + * <p> + * The value of this property must be of type <code>String</code>, + * <code>String[]</code>, or <code>Collection<String></code>. + * + * @see #SERVICE_EXPORTED_CONFIGS + */ + public static final String SERVICE_IMPORTED_CONFIGS = "service.imported.configs"; + + /** + * Service property identifying the intents that this service implement. + * This property has a dual purpose: + * <ul> + * <li>A bundle can use this service property to notify the distribution + * provider that these intents are already implemented by the exported + * service object.</li> + * <li>A distribution provider must use this property to convey the combined + * intents of: The exporting service, and, the intents that the exporting + * distribution provider adds, and the intents that the importing + * distribution provider adds.</li> + * </ul> + * To export a service, a distribution provider must expand any qualified + * intents. Both the exporting and importing distribution providers must + * recognize all intents before a service can be distributed. + * + * <p> + * The value of this property must be of type <code>String</code>, + * <code>String[]</code>, or <code>Collection<String></code>. + */ + public static final String SERVICE_INTENTS = "service.intents"; + + /* above are from Ch 13 Remote Service spec. */ + + /** + * Endpoint property identifying the id for this endpoint. This service + * property must always be set. + * + * <p> + * The value of this property must be of type <code>String</code>. + */ + String ENDPOINT_ID = "endpoint.id"; + + /** + * Endpoint property identifying the service id of the exported service. Can + * be absent or 0 if the corresponding endpoint is not for an OSGi service. + * + * <p> + * The value of this property must be of type <code>Long</code>. + */ + String ENDPOINT_SERVICE_ID = "endpoint.service.id"; + + /** + * Endpoint property identifying the universally unique id of the exporting + * framework. Can be absent if the corresponding endpoint is not for an OSGi + * service. + * + * <p> + * The value of this property must be of type <code>String</code>. + */ + String ENDPOINT_FRAMEWORK_UUID = "endpoint.framework.uuid"; + + /** + * Prefix for an endpoint property identifying the interface Java package + * version for an interface. For example, the property + * endpoint.package.version.com.acme=1.3 describes the version of the + * package for the com.acme.Foo interface. This endpoint property for an + * interface package does not have to be set. If not set, the value must be + * assumed to be 0. + * + * <p> + * Since endpoint properties are stored in a case insensitive map, case + * variants of a package name are folded together. + * + * <p> + * The value of this property must be of type <code>String</code>. + */ + String ENDPOINT_PACKAGE_VERSION_ = "endpoint.package.version."; + + Object getValue(); + + void setValue(Object value); + + String getName(); + + void setName(String name); + + String getType(); + + void setType(String type); + + String getStringValue(); + + void setStringValue(String value); +} |