Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis@composent.com2010-12-05 17:22:50 +0000
committerslewis@composent.com2010-12-05 17:22:50 +0000
commitddffd2ae2b280d70ecb07acdb8fe82b49db39fc1 (patch)
treef38019e8fa75410ac418200809b6cf0aa03c3c78 /incubation
parent87f19998e13483f993278bc372d8fdabb92b24dc (diff)
downloadorg.eclipse.ecf-ddffd2ae2b280d70ecb07acdb8fe82b49db39fc1.tar.gz
org.eclipse.ecf-ddffd2ae2b280d70ecb07acdb8fe82b49db39fc1.tar.xz
org.eclipse.ecf-ddffd2ae2b280d70ecb07acdb8fe82b49db39fc1.zip
rsa simplification
Diffstat (limited to 'incubation')
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java42
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java2
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java57
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java108
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java123
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java4
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java15
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java9
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java154
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java50
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java3
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java30
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java6
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java2
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java3
-rw-r--r--incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java2
16 files changed, 352 insertions, 258 deletions
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
index f2c5a3713..a34aadeaf 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Activator.java
@@ -9,12 +9,6 @@
******************************************************************************/
package org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
import java.util.UUID;
import javax.xml.parsers.SAXParserFactory;
@@ -184,42 +178,6 @@ public class Activator implements BundleActivator {
}
}
- public static List getStringPlusProperty(Map properties, String key) {
- Object value = properties.get(key);
- if (value == null) {
- return Collections.EMPTY_LIST;
- }
-
- if (value instanceof String) {
- return Collections.singletonList((String) value);
- }
-
- if (value instanceof String[]) {
- String[] values = (String[]) value;
- List result = new ArrayList(values.length);
- for (int i = 0; i < values.length; i++) {
- if (values[i] != null) {
- result.add(values[i]);
- }
- }
- return Collections.unmodifiableList(result);
- }
-
- if (value instanceof Collection) {
- Collection values = (Collection) value;
- List result = new ArrayList(values.size());
- for (Iterator iter = values.iterator(); iter.hasNext();) {
- Object v = iter.next();
- if (v instanceof String) {
- result.add((String) v);
- }
- }
- return Collections.unmodifiableList(result);
- }
-
- return Collections.EMPTY_LIST;
- }
-
private ServiceTracker containerManagerTracker;
public IContainerManager getContainerManager() {
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java
index 0bf256ace..54dc00c48 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/Discovery.java
@@ -550,7 +550,7 @@ public class Discovery {
.getService(refs[i]);
if (listener == null)
continue;
- List filters = Activator.getStringPlusProperty(
+ List filters = PropertiesUtil.getStringPlusProperty(
getMapFromProperties(refs[i]),
EndpointListener.ENDPOINT_LISTENER_SCOPE);
String matchingFilter = isMatch(description, filters);
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
index 8414fcb2b..e0d0c7213 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/EndpointDescriptionReader.java
@@ -44,7 +44,7 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
try {
// OSGI required properties
// objectClass/String+
- List<String> objectClasses = Activator.getStringPlusProperty(
+ List<String> objectClasses = PropertiesUtil.getStringPlusProperty(
parsedProperties, Constants.OBJECTCLASS);
// Must have at least one objectClass
if (objectClasses == null || objectClasses.size() == 0)
@@ -80,7 +80,7 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
endpointServiceId);
// service.imported.configs
- List<String> configurationTypes = Activator
+ List<String> configurationTypes = PropertiesUtil
.getStringPlusProperty(
parsedProperties,
org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS);
@@ -131,11 +131,8 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
String targetNamespace = (String) parsedProperties
.get(RemoteConstants.ENDPOINT_CONNECTTARGET_ID_NAMESPACE);
- if (targetName != null) {
- if (targetNamespace == null)
- targetNamespace = endpointContainerID.getNamespace().getName();
- targetID = createID(targetNamespace, targetName);
- }
+ if (targetName != null)
+ targetID = IDUtil.createID(targetNamespace, targetName);
// id filter
ID[] idFilter = getIDFilter(endpointContainerID.getNamespace(),
@@ -146,8 +143,9 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
Map properties = getNonECFProperties(parsedProperties);
- return new EndpointDescription(properties, endpointContainerID,
- remoteServiceId.longValue(), targetID, idFilter, rsFilter);
+ return new EndpointDescription(properties, endpointContainerID
+ .getNamespace().getName(), remoteServiceId.longValue(),
+ targetID, idFilter, rsFilter);
}
private ID[] getIDFilter(Namespace namespace, Map<String, Object> properties) {
@@ -156,7 +154,7 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
if (o != null && o instanceof List<?>) {
// Assumed to be list of strings
for (String i : (List<String>) o) {
- ID id = createID(namespace, i);
+ ID id = IDUtil.createID(namespace, i);
if (id != null)
resultList.add(id);
}
@@ -182,7 +180,7 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
+ i);
if (ns == null)
ns = namespace.getName();
- ID id = createID(ns, name);
+ ID id = IDUtil.createID(ns, name);
if (id != null)
resultList.add(id);
}
@@ -196,7 +194,7 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
Map<String, Object> parsedProperties) {
Map<String, Object> result = new HashMap<String, Object>();
for (String key : parsedProperties.keySet())
- if (!isECFProperty(key))
+ if (!PropertiesUtil.isECFProperty(key))
result.put(key, parsedProperties.get(key));
return result;
}
@@ -222,31 +220,16 @@ public class EndpointDescriptionReader extends AbstractMetadataFactory {
private ID getContainerID(Map<String, Object> properties)
throws IDCreateException {
- ID result = null;
- // First check to see if the container id and namespace have been
- // explicitly set
- String containerIDName = verifyStringProperty(properties,
- RemoteConstants.ENDPOINT_CONTAINER_ID);
- if (containerIDName != null) {
- String containerNS = verifyStringProperty(properties,
- RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
- Namespace ns = getNamespace(containerNS);
- if (ns != null)
- result = createID(ns, containerIDName);
- } else {
- // We try to get the ID from the OSGi id
- String osgiId = verifyStringProperty(
- properties,
- org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);
- if (osgiId == null)
- throw new IDCreateException(
- org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID
- + " must not be null");
- Namespace ns = findNamespaceForOSGiId(osgiId);
- if (ns != null)
- result = createID(ns, osgiId);
- }
- return result;
+ // We try to get the ID from the OSGi id
+ String osgiId = verifyStringProperty(properties,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);
+ if (osgiId == null)
+ throw new IDCreateException(
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID
+ + " must not be null");
+ String containerIDNamespace = verifyStringProperty(properties,
+ RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
+ return IDUtil.createID(properties, containerIDNamespace);
}
}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
new file mode 100644
index 000000000..dea9250ea
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/IDUtil.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.IDCreateException;
+import org.eclipse.ecf.core.identity.IDFactory;
+import org.eclipse.ecf.core.identity.IIDFactory;
+import org.eclipse.ecf.core.identity.Namespace;
+import org.eclipse.ecf.core.identity.StringID;
+import org.eclipse.ecf.osgi.services.remoteserviceadmin.EndpointDescription;
+
+public class IDUtil {
+
+ public static IIDFactory getIDFactory() {
+ return IDFactory.getDefault();
+ }
+
+ public static Namespace getNamespaceByName(String namespaceName) {
+ if (namespaceName == null)
+ return null;
+ return getIDFactory().getNamespaceByName(namespaceName);
+ }
+
+ public static Namespace findNamespaceByIdName(String idName) {
+ if (idName == null)
+ return null;
+ int colonIndex = idName.indexOf(Namespace.SCHEME_SEPARATOR);
+ if (colonIndex <= 0)
+ return null;
+ String scheme = idName.substring(0, colonIndex);
+ // First try to find the Namespace using the protocol directly
+ Namespace ns = getNamespaceByName(scheme);
+ if (ns == null) {
+ // Then try to find by comparing to all Namespace.getScheme()
+ ns = findNamespaceByScheme(scheme);
+ }
+ return ns;
+ }
+
+ public static Namespace findNamespaceByScheme(String scheme) {
+ if (scheme == null)
+ return null;
+ if (scheme.equals("ecftcp"))
+ return getIDFactory().getNamespaceByName(StringID.class.getName());
+ List namespaces = getIDFactory().getNamespaces();
+ for (Iterator i = namespaces.iterator(); i.hasNext();) {
+ Namespace ns = (Namespace) i.next();
+ if (scheme.equals(ns.getScheme())) {
+ // found it...so return
+ return ns;
+ }
+ }
+ // If the scheme is "ecftcp" then we use StringID
+ return null;
+ }
+
+ public static ID createID(Map<String, Object> osgiProperties,
+ String namespaceName) throws IDCreateException {
+ // We try to get the ID from the OSGi id
+ String osgiIdName = PropertiesUtil
+ .verifyStringProperty(
+ osgiProperties,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID);
+ if (osgiIdName == null)
+ throw new IDCreateException(
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID
+ + " must not be null");
+ return createID(namespaceName, osgiIdName);
+ }
+
+ public static ID createID(String namespaceName, String idName)
+ throws IDCreateException {
+ Namespace ns = (namespaceName == null) ? getNamespaceByName(namespaceName)
+ : findNamespaceByIdName(idName);
+ if (ns == null)
+ throw new IDCreateException(
+ "Cannot find Namespace for namespaceName=" + namespaceName
+ + " and idName=" + idName);
+ return createID(ns, idName);
+ }
+
+ public static ID createID(Namespace namespace, String idName)
+ throws IDCreateException {
+ return getIDFactory().createID(namespace, idName);
+ }
+
+ public static ID createContainerID(EndpointDescription endpointDescription)
+ throws IDCreateException {
+ return createID(endpointDescription.getContainerIDNamespace(),
+ endpointDescription.getId());
+ }
+
+ public static ID createID(Namespace namespace, Object[] args) throws IDCreateException {
+ return getIDFactory().createID(namespace, args);
+ }
+}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
new file mode 100644
index 000000000..7eda5edc7
--- /dev/null
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/internal/osgi/services/remoteserviceadmin/PropertiesUtil.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Composent, Inc. and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Composent, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.ecf.internal.osgi.services.remoteserviceadmin;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteConstants;
+
+public class PropertiesUtil {
+
+ protected static final List osgiProperties = Arrays
+ .asList(new String[] {
+ // OSGi properties
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
+ org.osgi.framework.Constants.OBJECTCLASS,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS,
+ org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED });
+
+ protected static final List ecfProperties = Arrays.asList(new String[] {
+ // ECF properties
+ RemoteConstants.ENDPOINT_CONNECTTARGET_ID,
+ RemoteConstants.ENDPOINT_CONNECTTARGET_ID_NAMESPACE,
+ RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
+ RemoteConstants.ENDPOINT_REMOTESERVICE_ID,
+ RemoteConstants.ENDPOINT_IDFILTER_IDS,
+ RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_COUNT,
+ RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
+ RemoteConstants.DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX,
+ RemoteConstants.DISCOVERY_NAMING_AUTHORITY,
+ RemoteConstants.DISCOVERY_PROTOCOLS,
+ RemoteConstants.DISCOVERY_SCOPE,
+ RemoteConstants.DISCOVERY_SERVICE_NAME,
+ RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT,
+ RemoteConstants.SERVICE_EXPORTED_CONTAINER_FACTORY_ARGS,
+ RemoteConstants.SERVICE_EXPORTED_CONTAINER_ID,
+ RemoteConstants.SERVICE_TYPE });
+
+ public static String verifyStringProperty(Map properties, String propName) {
+ Object r = properties.get(propName);
+ try {
+ return (String) r;
+ } catch (ClassCastException e) {
+ IllegalArgumentException iae = new IllegalArgumentException(
+ "property value is not a String: " + propName);
+ iae.initCause(e);
+ throw iae;
+ }
+ }
+
+ public static List getStringPlusProperty(Map properties, String key) {
+ Object value = properties.get(key);
+ if (value == null) {
+ return Collections.EMPTY_LIST;
+ }
+
+ if (value instanceof String) {
+ return Collections.singletonList((String) value);
+ }
+
+ if (value instanceof String[]) {
+ String[] values = (String[]) value;
+ List result = new ArrayList(values.length);
+ for (int i = 0; i < values.length; i++) {
+ if (values[i] != null) {
+ result.add(values[i]);
+ }
+ }
+ return Collections.unmodifiableList(result);
+ }
+
+ if (value instanceof Collection) {
+ Collection values = (Collection) value;
+ List result = new ArrayList(values.size());
+ for (Iterator iter = values.iterator(); iter.hasNext();) {
+ Object v = iter.next();
+ if (v instanceof String) {
+ result.add((String) v);
+ }
+ }
+ return Collections.unmodifiableList(result);
+ }
+
+ return Collections.EMPTY_LIST;
+ }
+
+ public static boolean isOSGiProperty(String key) {
+ if (key == null)
+ return false;
+ return osgiProperties.contains(key);
+ }
+
+ public static boolean isECFProperty(String key) {
+ if (key == null)
+ return false;
+ return ecfProperties.contains(key)
+ && !key.startsWith(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_)
+ && !key.startsWith(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_);
+ }
+
+ public static boolean isStandardProperty(String key) {
+ if (key == null)
+ return false;
+ return isOSGiProperty(key) || isECFProperty(key);
+ }
+
+
+}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
index b4f1f0526..db57e5ff1 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractConsumerContainerSelector.java
@@ -31,8 +31,8 @@ import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
public class AbstractConsumerContainerSelector extends
AbstractContainerSelector {
- protected IRemoteServiceContainer selectExistingConsumerContainer(ID endpointID,
- String[] remoteSupportedConfigs, ID connectTargetID) {
+ protected IRemoteServiceContainer selectExistingConsumerContainer(
+ ID endpointID, String[] remoteSupportedConfigs, ID connectTargetID) {
// Get all containers available
IContainer[] containers = getContainers();
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
index b8fad239a..0157e79bf 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractContainerSelector.java
@@ -21,12 +21,11 @@ import org.eclipse.ecf.core.IContainer;
import org.eclipse.ecf.core.IContainerFactory;
import org.eclipse.ecf.core.IContainerManager;
import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.identity.IIDFactory;
import org.eclipse.ecf.core.identity.Namespace;
import org.eclipse.ecf.core.security.IConnectContext;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
@@ -37,10 +36,6 @@ public abstract class AbstractContainerSelector {
public static final IRemoteServiceContainer[] EMPTY_REMOTE_SERVICE_CONTAINER_ARRAY = new IRemoteServiceContainer[] {};
- protected IIDFactory getIDFactory() {
- return IDFactory.getDefault();
- }
-
protected IContainerManager getContainerManager() {
return Activator.getDefault().getContainerManager();
}
@@ -135,12 +130,8 @@ public abstract class AbstractContainerSelector {
return containerFactory.createContainer(containerTypeDescription);
}
- protected ID createTargetID(IContainer container, Object target) {
- ID targetID = null;
- if (target instanceof String)
- targetID = getIDFactory().createID(container.getConnectNamespace(),
- (String) target);
- return targetID;
+ protected ID createTargetID(IContainer container, String target) {
+ return IDUtil.createID(container.getConnectNamespace(), target);
}
protected void disconnectContainer(IContainer container) {
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
index 9c7a4609b..29d09dd1d 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractHostContainerSelector.java
@@ -23,6 +23,7 @@ import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDCreateException;
import org.eclipse.ecf.core.identity.Namespace;
import org.eclipse.ecf.core.security.IConnectContext;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
@@ -89,7 +90,7 @@ public abstract class AbstractHostContainerSelector extends
protected boolean matchHostContainerToConnectTarget(
ServiceReference serviceReference, IContainer container) {
- Object target = serviceReference
+ String target = (String) serviceReference
.getProperty(RemoteConstants.ENDPOINT_CONNECTTARGET_ID);
if (target == null)
return true;
@@ -161,10 +162,10 @@ public abstract class AbstractHostContainerSelector extends
if (cid instanceof ID) {
cID = (ID) cid;
} else if (cid instanceof String) {
- cID = getIDFactory().createID(ns, (String) cid);
+ cID = IDUtil.createID(ns, (String) cid);
} else if (cid instanceof Object[]) {
Object cido = ((Object[]) cid)[0];
- cID = getIDFactory().createID(ns, new Object[] { cido });
+ cID = IDUtil.createID(ns, new Object[] { cido });
}
if (cID == null)
return true;
@@ -314,7 +315,7 @@ public abstract class AbstractHostContainerSelector extends
protected void connectHostContainer(ServiceReference serviceReference,
IContainer container, Object target)
throws ContainerConnectException, IDCreateException {
- ID targetID = createTargetID(container, target);
+ ID targetID = (target instanceof String)?IDUtil.createID(container.getConnectNamespace(), (String) target):IDUtil.createID(container.getConnectNamespace(), new Object[] { target});
Object context = serviceReference
.getProperty(RemoteConstants.SERVICE_EXPORTED_CONTAINER_CONNECT_CONTEXT);
IConnectContext connectContext = null;
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
index ca7f8e376..ccbe5a99f 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java
@@ -10,7 +10,6 @@
package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
@@ -20,39 +19,15 @@ import java.util.Map;
import java.util.StringTokenizer;
import org.eclipse.ecf.core.identity.ID;
-import org.eclipse.ecf.core.identity.IDCreateException;
-import org.eclipse.ecf.core.identity.IDFactory;
-import org.eclipse.ecf.core.identity.IIDFactory;
import org.eclipse.ecf.core.identity.Namespace;
-import org.eclipse.ecf.core.identity.StringID;
import org.eclipse.ecf.discovery.IServiceProperties;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.PropertiesUtil;
public abstract class AbstractMetadataFactory {
protected static final String COLLECTION_SEPARATOR = ",";
- protected static final List osgiProperties = Arrays
- .asList(new String[] {
- // OSGi properties
- org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
- org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_SERVICE_ID,
- org.osgi.framework.Constants.OBJECTCLASS,
- org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,
- org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
- org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_INTENTS,
- org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED, });
-
- protected static final List ecfProperties = Arrays.asList(new String[] {
- // ECF properties
- RemoteConstants.ENDPOINT_CONTAINER_ID,
- RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
- RemoteConstants.ENDPOINT_REMOTESERVICE_ID,
- RemoteConstants.ENDPOINT_CONNECTTARGET_ID,
- RemoteConstants.ENDPOINT_CONNECTTARGET_ID_NAMESPACE,
- RemoteConstants.ENDPOINT_IDFILTER_IDS,
- RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_COUNT,
- RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER });
-
protected String[] getStringArrayWithDefault(
Map<String, Object> properties, String key, String[] def) {
if (properties == null)
@@ -168,75 +143,22 @@ public abstract class AbstractMetadataFactory {
List result = new ArrayList();
for (int i = 0; i < count; i++) {
// decode string as name
- String name = decodeString(props,
+ String idName = decodeString(props,
RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_ + i);
- String ns = props
+ if (idName == null)
+ continue;
+ String nsName = props
.getPropertyString(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_
+ i);
- if (name != null && ns != null) {
- ID id = createID(ns, name);
- if (id != null)
- result.add(id);
- }
+ Namespace ns = (nsName != null) ? IDUtil.getNamespaceByName(nsName)
+ : IDUtil.findNamespaceByIdName(idName);
+ if (ns == null)
+ continue;
+ result.add(IDUtil.createID(ns, idName));
}
return (ID[]) result.toArray(new ID[] {});
}
- protected ID createID(String namespace, String name)
- throws IDCreateException {
- return IDFactory.getDefault().createID(namespace, name);
- }
-
- protected ID createID(Namespace namespace, String name)
- throws IDCreateException {
- return IDFactory.getDefault().createID(namespace, name);
- }
-
- protected IIDFactory getIDFactory() {
- return IDFactory.getDefault();
- }
-
- protected Namespace getNamespace(String namespaceName) {
- Namespace result = findNamespace(namespaceName);
- return (result == null) ? getIDFactory().getNamespaceByName(
- StringID.class.getName()) : result;
- }
-
- protected Namespace findNamespace(String namespaceName) {
- return getIDFactory().getNamespaceByName(namespaceName);
- }
-
- protected Namespace findNamespaceForOSGiId(String osgiId) {
- int colonIndex = osgiId.indexOf(':');
- if (colonIndex <= 0)
- return null;
- String scheme = osgiId.substring(0, colonIndex);
- // First try to find the Namespace using the protocol directly
- Namespace ns = findNamespace(scheme);
- if (ns == null) {
- // Then try to find by comparing to all Namespace.getScheme()
- ns = findNamespaceByScheme(scheme);
- }
- return ns;
- }
-
- protected Namespace findNamespaceByScheme(String scheme) {
- if (scheme == null)
- return null;
- if (scheme.equals("ecftcp"))
- return getIDFactory().getNamespaceByName(StringID.class.getName());
- List namespaces = getIDFactory().getNamespaces();
- for (Iterator i = namespaces.iterator(); i.hasNext();) {
- Namespace ns = (Namespace) i.next();
- if (scheme.equals(ns.getScheme())) {
- // found it...so return
- return ns;
- }
- }
- // If the scheme is "ecftcp" then we use StringID
- return null;
- }
-
protected void decodeOSGiProperties(IServiceProperties props,
Map osgiProperties) {
// OSGI
@@ -288,17 +210,8 @@ public abstract class AbstractMetadataFactory {
Map osgiProperties = new HashMap();
decodeOSGiProperties(discoveredServiceProperties, osgiProperties);
- // endpoint ID
- String endpointName = decodeString(discoveredServiceProperties,
- RemoteConstants.ENDPOINT_CONTAINER_ID);
- String endpointNamespace = decodeString(discoveredServiceProperties,
+ String containerIDNamespace = decodeString(discoveredServiceProperties,
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
- ID containerID = createID(endpointNamespace, endpointName);
- if (containerID == null)
- throw new NullPointerException("endpoint containerID for name="
- + endpointName + " an namespace=" + endpointNamespace
- + " cannot be null");
-
// remote service id
Long remoteServiceId = decodeLong(discoveredServiceProperties,
RemoteConstants.ENDPOINT_REMOTESERVICE_ID);
@@ -308,8 +221,12 @@ public abstract class AbstractMetadataFactory {
String targetNamespace = decodeString(discoveredServiceProperties,
RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE);
ID targetID = null;
- if (targetName != null && targetNamespace != null) {
- targetID = createID(targetNamespace, targetName);
+ if (targetName != null) {
+ Namespace ns = (targetNamespace != null) ? IDUtil
+ .getNamespaceByName(targetNamespace) : IDUtil
+ .findNamespaceByIdName(targetName);
+ if (ns != null)
+ targetID = IDUtil.createID(ns, targetName);
}
// ID filter
ID[] idFilter = decodeIDArray(discoveredServiceProperties);
@@ -321,7 +238,7 @@ public abstract class AbstractMetadataFactory {
decodeNonStandardServiceProperties(discoveredServiceProperties,
osgiProperties);
- return new EndpointDescription(osgiProperties, containerID,
+ return new EndpointDescription(osgiProperties, containerIDNamespace,
remoteServiceId.longValue(), targetID, idFilter,
remoteServiceFilter);
}
@@ -376,14 +293,11 @@ public abstract class AbstractMetadataFactory {
serviceIntents);
}
- // ECF endpoint ID = endpointDescription.getID()
- ID endpointID = endpointDescription.getContainerID();
- // external form of ID
- encodeString(result, RemoteConstants.ENDPOINT_CONTAINER_ID,
- endpointID.toExternalForm());
// namespace
+ String containerIDNamespace = endpointDescription
+ .getContainerIDNamespace();
encodeString(result, RemoteConstants.ENDPOINT_CONTAINER_ID_NAMESPACE,
- endpointID.getNamespace().getName());
+ containerIDNamespace);
// ECF remote service id = endpointDescription.getRemoteServiceId()
long remoteServiceId = endpointDescription.getRemoteServiceId();
encodeLong(result, RemoteConstants.ENDPOINT_REMOTESERVICE_ID, new Long(
@@ -417,30 +331,10 @@ public abstract class AbstractMetadataFactory {
result);
}
- protected boolean isOSGiProperty(String key) {
- if (key == null)
- return false;
- return osgiProperties.contains(key);
- }
-
- protected boolean isECFProperty(String key) {
- if (key == null)
- return false;
- return ecfProperties.contains(key)
- && !key.startsWith(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAME_)
- && !key.startsWith(RemoteConstants.ENDPOINT_IDFILTER_IDARRAY_NAMESPACE_);
- }
-
- protected boolean isStandardProperty(String key) {
- if (key == null)
- return false;
- return isOSGiProperty(key) || isECFProperty(key);
- }
-
protected void encodeNonStandardServiceProperties(
Map<String, Object> properties, IServiceProperties result) {
for (String key : properties.keySet()) {
- if (!isStandardProperty(key)) {
+ if (!PropertiesUtil.isStandardProperty(key)) {
Object val = properties.get(key);
if (val instanceof byte[]) {
result.setPropertyBytes(key, (byte[]) val);
@@ -458,7 +352,7 @@ public abstract class AbstractMetadataFactory {
for (Enumeration keys = props.getPropertyNames(); keys
.hasMoreElements();) {
String key = (String) keys.nextElement();
- if (!isStandardProperty(key)) {
+ if (!PropertiesUtil.isStandardProperty(key)) {
byte[] bytes = props.getPropertyBytes(key);
if (bytes != null) {
result.put(key, bytes);
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java
index c7fdfdeff..3b1d48914 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractRemoteServiceAdmin.java
@@ -13,7 +13,11 @@ import java.util.Map;
import java.util.Properties;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.ecf.core.ContainerTypeDescription;
+import org.eclipse.ecf.core.IContainer;
+import org.eclipse.ecf.core.IContainerManager;
import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.Activator;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.DebugOptions;
import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.LogUtility;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
@@ -189,8 +193,8 @@ public abstract class AbstractRemoteServiceAdmin {
ServiceReference serviceReference, Map<String, Object> properties,
IRemoteServiceRegistration registration,
IRemoteServiceContainer container) {
- // endpoint ID is container ID
- ID endpointID = registration.getContainerID();
+ // container ID
+ ID containerID = registration.getContainerID();
// If connectTarget is set
Object connectTarget = getPropertyValue(
RemoteConstants.ENDPOINT_CONNECTTARGET_ID, serviceReference,
@@ -199,7 +203,7 @@ public abstract class AbstractRemoteServiceAdmin {
if (connectTarget != null) {
// Then we get the host container connected ID
ID connectedID = container.getContainer().getConnectedID();
- if (connectedID != null && !connectedID.equals(endpointID))
+ if (connectedID != null && !connectedID.equals(containerID))
connectTargetID = connectedID;
}
ID[] idFilter = (ID[]) getPropertyValue(
@@ -209,9 +213,45 @@ public abstract class AbstractRemoteServiceAdmin {
RemoteConstants.ENDPOINT_REMOTESERVICE_FILTER,
serviceReference, properties);
IRemoteServiceID rsID = registration.getID();
+ // Make sure OSGi properties are set here
+
+ // endpoint id
+ String endpointid = (String) getPropertyValue(
+ org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
+ serviceReference, properties);
+ if (endpointid == null)
+ endpointid = containerID.getName();
+ properties
+ .put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_ID,
+ endpointid);
+ // framework id
+ String frameworkId = Activator.getDefault().getFrameworkUUID();
+ properties
+ .put(org.osgi.service.remoteserviceadmin.RemoteConstants.ENDPOINT_FRAMEWORK_UUID,
+ frameworkId);
+
+ String[] supportedConfigs = getSupportedConfigs(container
+ .getContainer());
+ properties
+ .put(org.osgi.service.remoteserviceadmin.RemoteConstants.SERVICE_IMPORTED_CONFIGS,
+ supportedConfigs);
+
return new EndpointDescription(serviceReference, properties,
- rsID.getContainerID(), rsID.getContainerRelativeID(),
- connectTargetID, idFilter, rsFilter);
+ containerID.getNamespace().getName(),
+ rsID.getContainerRelativeID(), connectTargetID, idFilter,
+ rsFilter);
+ }
+
+ private String[] getSupportedConfigs(IContainer container) {
+ IContainerManager containerManager = Activator.getDefault()
+ .getContainerManager();
+ if (containerManager == null)
+ return null;
+ ContainerTypeDescription ctd = containerManager
+ .getContainerTypeDescription(container.getID());
+ if (ctd == null)
+ return null;
+ return ctd.getSupportedConfigs();
}
public void close() {
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
index 6b94dec49..703dde7cd 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ConsumerContainerSelector.java
@@ -12,6 +12,7 @@ package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.util.List;
import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
public class ConsumerContainerSelector extends
@@ -28,7 +29,7 @@ public class ConsumerContainerSelector extends
trace("selectConsumerContainers", "endpointDescription=" + endpointDescription); //$NON-NLS-1$
// Get the endpointID
- ID endpointID = endpointDescription.getContainerID();
+ ID endpointID = IDUtil.createContainerID(endpointDescription);
// Get the remote supported configs
List<String> remoteSupportedConfigsList = endpointDescription
.getConfigurationTypes();
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
index 5171a7bde..40743aac8 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/EndpointDescription.java
@@ -12,14 +12,13 @@ package org.eclipse.ecf.osgi.services.remoteserviceadmin;
import java.util.Arrays;
import java.util.Map;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.ecf.core.identity.ID;
import org.osgi.framework.ServiceReference;
public class EndpointDescription extends
org.osgi.service.remoteserviceadmin.EndpointDescription {
- private ID containerID;
+ private String containerIDNamespace;
private long remoteServiceId;
private ID connectTargetID;
private ID[] idFilter;
@@ -28,11 +27,10 @@ public class EndpointDescription extends
private int hashCode;
public EndpointDescription(ServiceReference reference, Map osgiProperties,
- ID containerID, long remoteServiceId, ID connectTargetID,
- ID[] idFilter, String rsFilter) {
+ String containerIDNamespace, long remoteServiceId,
+ ID connectTargetID, ID[] idFilter, String rsFilter) {
super(reference, osgiProperties);
- this.containerID = containerID;
- Assert.isNotNull(this.containerID);
+ this.containerIDNamespace = containerIDNamespace;
this.remoteServiceId = remoteServiceId;
this.connectTargetID = connectTargetID;
this.idFilter = idFilter;
@@ -40,12 +38,11 @@ public class EndpointDescription extends
computeHashCode();
}
- public EndpointDescription(Map osgiProperties, ID containerID,
+ public EndpointDescription(Map osgiProperties, String containerIDNamespace,
long remoteServiceId, ID connectTargetID, ID[] idFilter,
String rsFilter) {
super(osgiProperties);
- this.containerID = containerID;
- Assert.isNotNull(this.containerID);
+ this.containerIDNamespace = containerIDNamespace;
this.remoteServiceId = remoteServiceId;
this.connectTargetID = connectTargetID;
this.idFilter = idFilter;
@@ -55,7 +52,6 @@ public class EndpointDescription extends
private void computeHashCode() {
this.hashCode = super.hashCode();
- this.hashCode = 31 * hashCode + containerID.hashCode();
this.hashCode = 31 * hashCode
+ (int) (remoteServiceId ^ (remoteServiceId >>> 32));
}
@@ -68,7 +64,7 @@ public class EndpointDescription extends
if (!(other instanceof EndpointDescription))
return false;
EndpointDescription o = (EndpointDescription) other;
- return super.equals(other) && (o.containerID.equals(this.containerID))
+ return super.equals(other)
&& (o.remoteServiceId == this.remoteServiceId);
}
@@ -76,8 +72,8 @@ public class EndpointDescription extends
return hashCode;
}
- public ID getContainerID() {
- return containerID;
+ public String getContainerIDNamespace() {
+ return containerIDNamespace;
}
public ID getConnectTargetID() {
@@ -98,10 +94,10 @@ public class EndpointDescription extends
public String toString() {
return "ECFEndpointDescription[properties=" + super.toString()
- + ",containerID=" + containerID + ", remoteServiceId="
- + remoteServiceId + ", connectTargetID=" + connectTargetID
- + ", idFilter=" + Arrays.toString(idFilter) + ", rsFilter="
- + rsFilter + ", hashCode=" + hashCode + "]";
+ + ",containerIDNamespace=" + containerIDNamespace
+ + ", remoteServiceId=" + remoteServiceId + ", connectTargetID="
+ + connectTargetID + ", idFilter=" + Arrays.toString(idFilter)
+ + ", rsFilter=" + rsFilter + ", hashCode=" + hashCode + "]";
}
}
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
index 789a500a8..dd4e3f0d7 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/HostContainerSelector.java
@@ -33,9 +33,9 @@ public class HostContainerSelector extends AbstractHostContainerSelector
String[] serviceExportedConfigs, String[] serviceIntents) {
// Find previously created containers that match the given
// serviceExportedConfigs and serviceIntents
- Collection rsContainers = selectExistingHostContainers(serviceReference,
- serviceExportedInterfaces, serviceExportedConfigs,
- serviceIntents);
+ Collection rsContainers = selectExistingHostContainers(
+ serviceReference, serviceExportedInterfaces,
+ serviceExportedConfigs, serviceIntents);
if (rsContainers.size() == 0 && autoCreateContainer) {
// If no existing containers are found we'll go through
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
index 47dc09f33..080ece7b7 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteConstants.java
@@ -19,8 +19,6 @@ public class RemoteConstants {
public static final String DISCOVERY_SERVICE_NAME = "ecf.endpoint.discovery.servicename";
public static final String DISCOVERY_DEFAULT_SERVICE_NAME_PREFIX = "osgirsvc_";
- // container id. Value of type ID for EndpointDescription
- public static final String ENDPOINT_CONTAINER_ID = "ecf.endpoint.id";
// container id namespace. Value of type String
public static final String ENDPOINT_CONTAINER_ID_NAMESPACE = "ecf.endpoint.id.ns";
// remote service id. Value of type Long
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
index 8e6ec892a..2e8cfb379 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/RemoteServiceAdmin.java
@@ -17,6 +17,7 @@ import java.util.Map;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.util.ECFException;
+import org.eclipse.ecf.internal.osgi.services.remoteserviceadmin.IDUtil;
import org.eclipse.ecf.remoteservice.IOSGiRemoteServiceContainerAdapter;
import org.eclipse.ecf.remoteservice.IRemoteService;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
@@ -205,7 +206,7 @@ public class RemoteServiceAdmin extends AbstractRemoteServiceAdmin implements
EndpointDescription endpointDescription,
IRemoteServiceContainer rsContainer) throws ECFException {
Collection<String> interfaces = endpointDescription.getInterfaces();
- ID endpointID = endpointDescription.getContainerID();
+ ID endpointID = IDUtil.createContainerID(endpointDescription);
ID targetID = endpointDescription.getConnectTargetID();
ID[] idFilter = endpointDescription.getIDFilter();
if (idFilter == null)
diff --git a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
index 807510b47..7f5b42546 100644
--- a/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
+++ b/incubation/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/ServiceInfoFactory.java
@@ -116,7 +116,7 @@ public class ServiceInfoFactory extends AbstractMetadataFactory implements
IDiscoveryAdvertiser advertiser, IServiceTypeID serviceTypeID,
String serviceName) throws URISyntaxException {
String path = "/" + serviceName;
- String str = endpointDescription.getContainerID().getName();
+ String str = endpointDescription.getId();
URI uri = null;
while (true) {
try {

Back to the top