Author: davidb
Date: Thu Dec 17 11:41:38 2009
New Revision: 891658
URL: http://svn.apache.org/viewvc?rev=891658&view=rev
Log:
Files SVN missed in previous commit.
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
(with props)
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
(with props)
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+/**
+ * A white board service that represents a listener for endpoints.
+ *
+ * An Endpoint Listener represents a participant in the distributed model that
+ * is interested in Endpoint Descriptions.
+ *
+ * This white board service can be used in many different scenarios. However,
+ * the primary use case is to allow a remote manager to be informed of End
Point
+ * Descriptions available in the network and inform the network about available
+ * End Point Descriptions.
+ *
+ * Both the network bundle and the manager bundle register an Endpoint Listener
+ * service. The manager informs the network bundle about End Points that it
+ * creates. The network bundles then uses a protocol like SLP to announce these
+ * local end-points to the network.
+ *
+ * If the network bundle discovers a new Endpoint through its discovery
+ * protocol, then it sends an End Point Description to all the End Point
+ * Listener services that are registered (except its own) that have specified
an
+ * interest in that endpoint.
+ *
+ * Endpoint Listener services can express their <i>scope</i> with the service
+ * property {...@link #ENDPOINT_LISTENER_SCOPE}. This service property is a
list of
+ * filters. An Endpoint Description should only be given to a Endpoint Listener
+ * when there is at least one filter that matches the Endpoint Description
+ * properties. given to it.
+ *
+ * This filter model is quite flexible. For example, a discovery bundle is only
+ * interested in locally originating Endpoint Descriptions. The following
filter
+ * ensure that it only sees local endpoints.
+ *
+ * <pre>
+ * (org.osgi.framework.uuid=72dc5fd9-5f8f-4f8f-9821-9ebb433a5b72)
+ * </pre>
+ *
+ * In the same vein, a manager that is only interested in remote Endpoint
+ * Descriptions can use a filter like:
+ *
+ * <pre>
+ * (!(org.osgi.framework.uuid=72dc5fd9-5f8f-4f8f-9821-9ebb433a5b72))
+ * </pre>
+ *
+ * Where in both cases, the given UUID is the UUID of the local framework that
+ * can be found in the Framework properties.
+ *
+ * The Endpoint Listener's scope maps very well to the service hooks. A manager
+ * can just register all filters found from the Listener Hook as its scope.
This
+ * will automatically provide it with all known endpoints that match the given
+ * scope, without having to inspect the filter string.
+ *
+ * In general, when an Endpoint Description is discovered, it should be
+ * dispatched to all registered Endpoint Listener services. If a new Endpoint
+ * Listener is registered, it should be informed about all currently known
+ * Endpoints that match its scope. If a getter of the Endpoint Listener service
+ * is unregistered, then all its registered Endpoint Description objects must
be
+ * removed.
+ *
+ * The Endpoint Listener models a <i>best effort</i> approach. Participating
+ * bundles should do their utmost to keep the listeners up to date, but
+ * implementers should realize that many endpoints come through unreliable
+ * discovery processes.
+ *
+ *
+ * @ThreadSafe
+ * @version $Revision$
+ */
+public interface EndpointListener {
+ /**
+ * Specifies the interest of this listener with filters. This listener
is
+ * only interested in Endpoint Descriptions where its properties match
the
+ * given filter. The type of this property must be <code>String+</code>.
+ */
+ String ENDPOINT_LISTENER_SCOPE = "endpoint.listener.scope";
+
+ /**
+ * Register an endpoint with this listener.
+ *
+ * If the endpoint matches one of the filters registered with the
+ * {...@link #ENDPOINT_LISTENER_SCOPE} service property then this
filter should
+ * be given as the <code>matchedFilter</code> parameter.
+ *
+ * When this service is first registered or it is modified, it should
+ * receive all known endpoints matching the filter.
+ *
+ * @param endpoint The Endpoint Description to be published
+ * @param matchedFilter The filter from the {...@link
#ENDPOINT_LISTENER_SCOPE}
+ * that matched the endpoint, must not be <code>null</code>.
+ */
+ void endpointAdded(EndpointDescription endpoint, String matchedFilter);
+
+ /**
+ * Remove the registration of an endpoint.
+ *
+ * If an endpoint that was registered with the
+ * {...@link #endpointAdded(EndpointDescription, String)} method is no
longer
+ * available then this method should be called. This will remove the
+ * endpoint from the listener.
+ *
+ * It is not necessary to remove endpoints when the service is
unregistered
+ * or modified in such a way that not all endpoints match the interest
+ * filter anymore.
+ *
+ * @param endpoint The Endpoint Description that is no longer valid.
+ * @param matchedFilter The filter from the {...@link
#ENDPOINT_LISTENER_SCOPE}
+ * that matched the endpoint, must not be <code>null</code>.
+ */
+ void endpointRemoved(EndpointDescription endpoint, String
matchedFilter);
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/EndpointListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * An Export Reference associates a service with a local endpoint.
+ *
+ * The Export Reference can be used to reference an exported service. When the
+ * service is no longer exported, all methods must return <code>null</code>;
+ *
+ * @ThreadSafe
+ * @version $Revision$
+ */
+public interface ExportReference {
+ /**
+ * Return the service being exported.
+ *
+ * @return The service being exported, must be <code>null</code> when
this
+ * registration is unregistered.
+ */
+ ServiceReference getExportedService();
+
+ /**
+ * Return the Endpoint Description that is created for this
registration.
+ *
+ * @return the local Endpoint Description
+ */
+ EndpointDescription getExportedEndpoint();
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportReference.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * An Export Registration associates a service to a local endpoint.
+ *
+ * The Export Registration can be used to delete the endpoint associated with
an
+ * this registration. It is created with the
+ * {...@link RemoteServiceAdmin#exportService(ServiceReference,java.util.Map)}
+ * method.
+ *
+ * When this Export Registration has been unregistered, the methods must all
+ * return <code>null</code>.
+ *
+ * @ThreadSafe
+ * @version $Revision$
+ */
+public interface ExportRegistration {
+ /**
+ * Return the Export Reference for the exported service.
+ *
+ * @return An Export Reference for this registration
+ * @throws IllegalStateException Thrown when this object was not
properly
+ * initialized, see {...@link #getException()}
+ */
+ ExportReference getExportReference();
+
+ /**
+ * Delete the local endpoint and disconnect any remote distribution
+ * providers. After this method returns, all the methods must return
+ * <code>null</code>.
+ *
+ * This method has no effect when the endpoint is already destroyed or
being
+ * destroyed.
+ */
+ void close();
+
+ /**
+ * Exception for any error during the import process.
+ *
+ * If the Remote Admin for some reasons is unable to create a
registration,
+ * then it must return a <code>Throwable</code> from this method. In
this
+ * case, all other methods must return on this interface must throw an
+ * Illegal State Exception. If no error occurred, this method must
return
+ * <code>null</code>.
+ *
+ * The error must be set before this Import Registration is returned.
+ * Asynchronously occurring errors must be reported to the log.
+ *
+ * @return The exception that occurred during the creation of the
+ * registration or <code>null</code> if no exception occurred.
+ */
+ Throwable getException();
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ExportRegistration.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+/**
+ * An Import Registration associates an active proxy service to a remote
+ * endpoint.
+ *
+ * The Import Registration can be used to delete the proxy associated with an
+ * endpoint. It is created with t...@link RemoteServiceAdmin#importService}
+ * method.
+ *
+ * @ThreadSafe
+ * @version $Revision$
+ */
+public interface ImportRegistration {
+ /**
+ * Answer the associated Export Reference.
+ *
+ * @return An Import Reference for this registration
+ * @throws IllegalStateException Thrown when this object was not
properly
+ * initialized, see {...@link #getException()}
+ */
+ ImportReference getImportReference();
+
+ /**
+ * Unregister this Import Registration. This must close the connection
to
+ * the end endpoint unregister the proxy. After this method returns, all
+ * other methods must return null.
+ *
+ * This method has no effect when the service is already unregistered
or in
+ * the process off.
+ */
+ void close();
+
+ /**
+ * Exception for any error during the import process.
+ *
+ * If the Remote Admin for some reasons is unable to create a
registration,
+ * then it must return a <code>Throwable</code> from this method. In
this
+ * case, all other methods must return on this interface must thrown an
+ * Illegal State Exception. If no error occurred, this method must
return
+ * <code>null</code>.
+ *
+ * The error must be set before this Import Registration is returned.
+ * Asynchronously occurring errors must be reported to the log.
+ *
+ * @return The exception that occurred during the creation of the
+ * registration or <code>null</code> if no exception occurred.
+ */
+ Throwable getException();
+
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/ImportRegistration.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+/**
+ * Provide the definition of the constants used in the Remote Services API.
+ *
+ * @Immutable
+ * @version $Revision$
+ */
+public class RemoteConstants {
+ private RemoteConstants() {
+ }
+
+ /**
+ * 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</code> of
<code>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</code> of
<code>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</code> of <code>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</code> of <code>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</code> of <code>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</code> of <code>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</code> of
<code>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:</li>
+ * <ul>
+ * <li>The exporting service, and</li>
+ * <li>the intents that the exporting distribution provider adds,
and</li>
+ * <li>the intents that the importing distribution provider adds.</li>
+ * </ul>
+ * <i></i>
+ *
+ * </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</code> of
<code>String</code>.
+ */
+ public static final String SERVICE_INTENTS
= "service.intents";
+
+ /* above are from Ch 13 Remote Service spec. */
+
+ /**
+ * Endpoint property identifying the URI for this endpoint. This service
+ * property must always be set.
+ *
+ * <p>
+ * The value of this property must be of type <code>String</code>.
+ */
+ public final static String ENDPOINT_URI
= "endpoint.uri";
+
+ /**
+ * 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>.
+ */
+ public final static String ENDPOINT_ID
= "endpoint.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>.
+ */
+ public final static 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>.
+ */
+ public final static String ENDPOINT_PACKAGE_VERSION_
= "endpoint.package.version.";
+
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteConstants.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * A Remote Service Admin manages the import and export of services.
+ *
+ * A Distribution Provider can expose a control interface. This interface
allows
+ * the a remote manager to control the export and import of services.
+ *
+ * The API allows a remote manager to export a service, to import a service,
and
+ * find out about the current imports and exports.
+ *
+ * @ThreadSafe
+ * @version $Revision$
+ */
+public interface RemoteServiceAdmin {
+
+ /**
+ * Export a service to a given endpoint. The Remote Service Admin must
+ * create an endpoint from the given description that can be used by
other
+ * Distrbution Providers to connect to this Remote Service Admin and
use the
+ * exported service. This method can return null if the service could
not be
+ * exported because the endpoint could not be implemented by this Remote
+ * Service Admin.
+ *
+ * TODO Peter to update for case insensitive properties
+ *
+ * The properties on a Service Reference are case insensitive while the
+ * properties on a <code>properties</code> are case sensitive. A value
in
+ * the <code>properties</code> must therefore override any case variant
in
+ * the properties of the Service Reference.
+ *
+ * <p>
+ * If the caller does not have the appropriate
+ * <code>EndpointPermission[endpoint,EXPORT]</code> for an endpoint,
and the
+ * Java Runtime Environment supports permissions, then the
+ * {...@link ExportRegistration#getException() getException} method on
the
+ * corresponding returned {...@link ExportRegistration} will return a
+ * <code>SecurityException</code>.
+ *
+ * @param reference The Service Reference to export.
+ * @param properties The properties to create a local endpoint that can
be
+ * implemented by this Remote Service Admin. If this is null, the
+ * endpoint will be determined by the properties on the service.
The
+ * properties are the same as given for an exported service.
They are
+ * overlaid over any properties the service defines (case
+ * insensitive). This parameter can be <code>null</code>, this
should
+ * be treated as an empty map.
+ *
+ * TODO Peter The return description does not mesh with
returning a
+ * list! Why a list and not just one?
+ * @return An Export Registration that combines the Endpoint
Description and
+ * the Service Reference or <code>null</code> if the service
could
+ * not be exported.
+ * @throws IllegalArgumentException If any of the properties has a value
+ * that is not syntactically correct or if the service
properties
+ * and the overlaid properties do not contain a
+ * {...@link RemoteConstants#SERVICE_EXPORTED_INTERFACES} entry.
+ * @throws UnsupportedOperationException If any of the intents expressed
+ * through the properties is not supported by the distribution
+ * provider.
+ */
+ Collection<ExportRegistration> exportService(ServiceReference reference,
+ Map<String, Object> properties);
+
+ /**
+ * Import a service from an endpoint. The Remote Service Admin must use
the
+ * given endpoint to create a proxy. This method can return null if the
+ * service could not be imported.
+ *
+ * @param endpoint The Endpoint Description to be used for import.
+ * @return An Import Registration that combines the Endpoint
Description and
+ * the Service Reference or <code>null</code> if the endpoint
could
+ * not be imported.
+ * @throws SecurityException If the caller does not have the appropriate
+ * <code>EndpointPermission[endpoint,IMPORT]</code> for the
+ * endpoint, and the Java Runtime Environment supports
permissions.
+ */
+ ImportRegistration importService(EndpointDescription endpoint);
+
+ /**
+ * Return the currently active Export References.
+ *
+ * <p>
+ * If the caller does not have the appropriate
+ * <code>EndpointPermission[endpoint,READ]</code> for an endpoint, and
the
+ * Java Runtime Environment supports permissions, then returned
collection
+ * will not contain a reference to the exported endpoint.
+ *
+ * @return A <code>Collection</code> of {...@link ExportReference}s
that are
+ * currently active.
+ */
+ Collection<ExportReference> getExportedServices();
+
+ /**
+ * Return the currently active Import References.
+ *
+ * <p>
+ * If the caller does not have the appropriate
+ * <code>EndpointPermission[endpoint,READ]</code> for an endpoint, and
the
+ * Java Runtime Environment supports permissions, then returned
collection
+ * will not contain a reference to the imported endpoint.
+ *
+ * @return A <code>Collection</code> of {...@link ImportReference}s
that are
+ * currently active.
+ */
+ Collection<ImportReference> getImportedEndpoints();
+
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdmin.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+import org.osgi.framework.Bundle;
+
+/**
+ * Provides the event information for a Remote Admin event.
+ *
+ * @Immutable
+ * @version $Revision$
+ */
+public class RemoteServiceAdminEvent {
+ /**
+ * Add an import registration. The Remote Services Admin will call this
+ * method when it imports a service. When this service is registered,
the
+ * Remote Service Admin must notify the listener of all existing Import
+ * Registrations.
+ *
+ */
+ public static final int IMPORT_REGISTRATION
= 1;
+
+ /**
+ * Add an export registration. The Remote Services Admin will call this
+ * method when it exports a service. When this service is registered,
the
+ * Remote Service Admin must notify the listener of all existing Export
+ * Registrations.
+ */
+ public static final int EXPORT_REGISTRATION
= 2;
+
+ /**
+ * Remove an export registration. The Remote Services Admin will call
this
+ * method when it removes the export of a service.
+ *
+ */
+ public static final int EXPORT_UNREGISTRATION = 3;
+
+ /**
+ * Remove an import registration. The Remote Services Admin will call
this
+ * method when it removes the import of a service.
+ *
+ */
+ public static final int IMPORT_UNREGISTRATION = 4;
+
+ /**
+ * A fatal importing error occurred. The Import Registration has been
+ * closed.
+ */
+ public static final int IMPORT_ERROR
= 5;
+
+ /**
+ * A fatal exporting error occurred. The Export Registration has been
+ * closed.
+ */
+ public static final int EXPORT_ERROR
= 6;
+
+ /**
+ * A problematic situation occurred, the export is still active.
+ */
+ public static final int EXPORT_WARNING
= 7;
+ /**
+ * A problematic situation occurred, the import is still active.
+ */
+ public static final int IMPORT_WARNING
= 8;
+
+ private final ImportReference importReference;
+ private final ExportReference exportReference;
+ private final Throwable exception;
+ private final int type;
+ private final Bundle source;
+
+ /**
+ * Private constructor.
+ *
+ * @param type The event type
+ * @param source The source bundle, must not be <code>null</code>.
+ * @param importReference The importReference, can be <code>null</code>.
+ * @param exportReference The exportReference, can be <code>null</code>.
+ * @param exception Any exceptions encountered, can be <code>null</code>
+ */
+ private RemoteServiceAdminEvent(int type, Bundle source,
+ ImportReference importReference, ExportReference
exportReference,
+ Throwable exception) {
+ if (source == null) {
+ throw new NullPointerException("source must not be
null");
+ }
+ this.type = type;
+ this.source = source;
+ this.importReference = importReference;
+ this.exportReference = exportReference;
+ this.exception = exception;
+ }
+
+ /**
+ * Create a Remote Service Admin Event for an export notification.
+ *
+ * @param type The event type.
+ * @param source The source bundle, must not be <code>null</code>.
+ * @param exportReference The exportReference, can not be
<code>null</code>.
+ * @param exception Any exceptions encountered, can be
<code>null</code>.
+ */
+ public RemoteServiceAdminEvent(int type, Bundle source,
+ ExportReference exportReference, Throwable exception) {
+ this(type, source, null, exportReference, exception);
+ }
+
+ /**
+ * Create a Remote Service Admin Event for an import notification.
+ *
+ * @param type The event type.
+ * @param source The source bundle, must not be <code>null</code>.
+ * @param importReference The importReference, can not be
<code>null</code>.
+ * @param exception Any exceptions encountered, can be
<code>null</code>.
+ */
+ public RemoteServiceAdminEvent(int type, Bundle source,
+ ImportReference importReference, Throwable exception) {
+ this(type, source, importReference, null, exception);
+ }
+
+ /**
+ * Return the Import Reference for this event.
+ *
+ * @return The Import Reference or <code>null</code>.
+ */
+ public ImportReference getImportReference() {
+ return importReference;
+ }
+
+ /**
+ * Return the Export Reference for this event.
+ *
+ * @return The Export Reference or <code>null</code>.
+ */
+ public ExportReference getExportReference() {
+ return exportReference;
+ }
+
+ /**
+ * Return the exception for this event.
+ *
+ * @return The exception or <code>null</code>.
+ */
+ public Throwable getException() {
+ return exception;
+ }
+
+ /**
+ * Return the type of this event.
+ *
+ * @return The type of this event.
+ */
+ public int getType() {
+ return type;
+ }
+
+ /**
+ * Return the bundle source of this event.
+ *
+ * @return The bundle source of this event.
+ */
+ public Bundle getSource() {
+ return source;
+ }
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminEvent.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
URL:
http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java?rev=891658&view=auto
==============================================================================
---
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
(added)
+++
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
Thu Dec 17 11:41:38 2009
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) OSGi Alliance (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.remoteserviceadmin;
+
+/**
+ * A {...@link RemoteServiceAdminEvent} listener is notified asynchronously of
any
+ * export or import registrations and unregistrations.
+ *
+ * <p>
+ * If the Java Runtime Environment supports permissions, then filtering is
done.
+ * <code>RemoteServiceAdminEvent</code> objects are only delivered to the
+ * listener if the bundle which defines the listener object's class has the
+ * appropriate <code>EndpointPermission[endpoint,READ]</code> for the endpoint
+ * referenced by the event.
+ *
+ *
+ * @see RemoteServiceAdminEvent
+ * @ThreadSafe
+ * @version $Revision$
+ */
+
+public interface RemoteServiceAdminListener {
+ /**
+ * Receive notification of any export or import registrations and
+ * unregistrations.
+ *
+ * @param event The {...@link RemoteServiceAdminEvent} object.
+ */
+ void remoteAdminEvent(RemoteServiceAdminEvent event);
+}
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/RemoteServiceAdminListener.java
------------------------------------------------------------------------------
svn:keywords = Rev Date