Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionFactory.java')
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionFactory.java67
1 files changed, 62 insertions, 5 deletions
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionFactory.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionFactory.java
index 8fbdc22e7..fa277dd3f 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionFactory.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractEndpointDescriptionFactory.java
@@ -1,18 +1,75 @@
package org.eclipse.ecf.osgi.services.remoteserviceadmin;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.ecf.discovery.IDiscoveryLocator;
import org.eclipse.ecf.discovery.IServiceInfo;
+import org.eclipse.ecf.discovery.IServiceProperties;
import org.eclipse.ecf.discovery.identity.IServiceID;
-public abstract class AbstractEndpointDescriptionFactory extends AbstractMetadataFactory implements IEndpointDescriptionFactory {
+public abstract class AbstractEndpointDescriptionFactory extends
+ AbstractMetadataFactory implements IEndpointDescriptionFactory {
+
+ protected List<DiscoveredEndpointDescription> discoveredEndpointDescriptions = new ArrayList();
- public EndpointDescription createDiscoveredEndpointDescription(
- IServiceInfo discoveredServiceInfo) {
+ private DiscoveredEndpointDescription findDiscoveredEndpointDescription(
+ EndpointDescription endpointDescription) {
+ synchronized (discoveredEndpointDescriptions) {
+ for (DiscoveredEndpointDescription d : discoveredEndpointDescriptions) {
+ EndpointDescription ed = d.getEndpointDescription();
+ if (ed.equals(endpointDescription))
+ return d;
+ }
+ }
return null;
}
- public EndpointDescription getUndiscoveredEndpointDescription(
- IServiceID serviceID) {
+ public DiscoveredEndpointDescription createDiscoveredEndpointDescription(
+ IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo) {
+ try {
+ EndpointDescription endpointDescription = createEndpointDescription(
+ locator, discoveredServiceInfo);
+ synchronized (discoveredEndpointDescriptions) {
+ DiscoveredEndpointDescription ded = findDiscoveredEndpointDescription(endpointDescription);
+ if (ded != null) return ded;
+ else return createDiscoveredEndpointDescription(locator,discoveredServiceInfo,endpointDescription);
+ }
+ } catch (Exception e) {
+ logError("createDiscoveredEndpointDescription",
+ "Exception creating discovered endpoint description", e);
+ return null;
+ }
+ }
+
+ public DiscoveredEndpointDescription getUndiscoveredEndpointDescription(
+ IDiscoveryLocator locator, IServiceID serviceID) {
+ // XXX todo
return null;
}
+ protected EndpointDescription createEndpointDescription(
+ IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo) {
+ IServiceProperties discoveredServiceProperties = discoveredServiceInfo
+ .getServiceProperties();
+ Map props = decodeServiceProperties(discoveredServiceProperties);
+ return new EndpointDescription(props);
+
+ }
+
+ protected DiscoveredEndpointDescription createDiscoveredEndpointDescription(
+ IDiscoveryLocator locator, IServiceInfo discoveredServiceInfo,
+ EndpointDescription endpointDescription) {
+ return new DiscoveredEndpointDescription(
+ locator.getServicesNamespace(), discoveredServiceInfo.getServiceID(), endpointDescription);
+ }
+
+
+ public void close() {
+ synchronized (discoveredEndpointDescriptions) {
+ discoveredEndpointDescriptions.clear();
+ }
+ super.close();
+ }
}

Back to the top