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 (&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


Reply via email to