1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*
* 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.runtime;
import java.util.Collection;
import java.util.Map;
import org.osgi.framework.ServiceReference;
/**
* Every Distribution Provider registers exactly one Service in the
* ServiceRegistry implementing this interface. The service is registered with
* extra properties identified at the beginning of this interface to denote the
* Distribution Provider product name, version, vendor and supported intents.
*/
public interface OSGiDistributionProvider {
/**
* Service Registration property for the name of the Distribution Provider
* product.
*/
static final String PROP_KEY_PRODUCT_NAME = "osgi.remote.distribution.product";
/**
* Service Registration property for the version of the Distribution
* Provider product.
*/
static final String PROP_KEY_PRODUCT_VERSION = "osgi.remote.distribution.product.version";
/**
* Service Registration property for the Distribution Provider product
* vendor name.
*/
static final String PROP_KEY_VENDOR_NAME = "osgi.remote.distribution.vendor";
/**
* Service Registration property that lists the intents supported by this
* DistributionProvider. Value of this property is of type
* Collection (<? extends String>).
*/
static final String PROP_KEY_SUPPORTED_INTENTS = "osgi.remote.distribition.supported_intents";
/**
* @return ServiceReferences of services registered in the local Service
* Registry that are proxies to remote services. If no proxies are
* registered, then an empty collection is returned.
*/
Collection<ServiceReference> getRemoteServices();
/**
* @return ServiceReferences of local services that are exposed remotely
* using this DisitributionProvider. Note that certain services may be
* exposed and without being published to a discovery service. This
* API returns all the exposed services. If no services are exposed an
* empty collection is returned.
*/
Collection<ServiceReference> getExposedServices();
/**
* Provides access to extra properties set by the DistributionProvider on
* endpoints, as they will appear on client side proxies given an exposed
* ServiceReference.
* These properties are not always available on the server-side
* ServiceReference of the exposed
* service but will be on the remote client side proxy to this service.
* This API provides access to these extra properties from the exposing
* side.
* E.g. a service is exposed remotely, the distribution software is configured
* to add transactionality to the remote service. Because of this, on the
* client-side proxy the property service.intents=�transactionality� is set.
* However, these intents are *not* always set on the original
* ServiceRegistration on the server-side since on the server side the service
* object is a local pojo which doesn�t provide transactionality by itself.
* This QoS is added by the distribution.
* This API provides access to these extra properties from the server-side.
*
* @param sr A ServiceReference of an exposed service.
* @return The map of extra properties.
*/
Map<String, String> getExposedProperties(ServiceReference sr);
}
|