cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dav...@apache.org
Subject svn commit: r891658 - /cxf/dosgi/trunk/dsw/cxf-osgi-remote-service-admin-interfaces/src/main/java/org/osgi/service/remoteserviceadmin/
Date Thu, 17 Dec 2009 11:41:39 GMT
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 the{@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 (&quot;*&quot;, &#92;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



Mime
View raw message