Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkuppe2008-02-06 17:02:27 +0000
committermkuppe2008-02-06 17:02:27 +0000
commit406cf5138cd2cb2ff409f65e19413180ea3f8e79 (patch)
tree2f3cdcc8016d1f2f73cf0bdafc98ba09028831e5 /providers/bundles/org.eclipse.ecf.provider.jslp
parent435a8504ed1763748441bd000bf84af997411ae7 (diff)
downloadorg.eclipse.ecf-406cf5138cd2cb2ff409f65e19413180ea3f8e79.tar.gz
org.eclipse.ecf-406cf5138cd2cb2ff409f65e19413180ea3f8e79.tar.xz
org.eclipse.ecf-406cf5138cd2cb2ff409f65e19413180ea3f8e79.zip
NEW - bug 218027: [Discovery][jSLP] Provider doesn't handle scope correctly
https://bugs.eclipse.org/bugs/show_bug.cgi?id=218027
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.jslp')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java3
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/ServiceURLAdapter.java11
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/container/JSLPDiscoveryContainer.java13
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPServiceTypeID.java10
5 files changed, 26 insertions, 13 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
index 95bfc1c3f..d1b3ec14e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/Activator.java
@@ -201,8 +201,7 @@ public class Activator implements BundleActivator {
public Collection getServiceURLs(JSLPServiceTypeID stid) throws ServiceLocationException {
Set result = new HashSet();
- //TODO-mkuppe honor the scope during service discovery
- result.addAll(Collections.list(findServices(stid.getServiceType(), /* Arrays.asList(stid.getScopes()),*/null, null)));
+ result.addAll(Collections.list(findServices(stid.getServiceType(), Arrays.asList(stid.getScopes()), null)));
return result;
}
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/ServiceURLAdapter.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/ServiceURLAdapter.java
index f4482a707..499b68dd7 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/ServiceURLAdapter.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/internal/provider/jslp/ServiceURLAdapter.java
@@ -27,8 +27,13 @@ public class ServiceURLAdapter {
private IServiceID serviceID;
public ServiceURLAdapter(ServiceURL aServiceURL) {
+ this(aServiceURL, new String[0]);
+ }
+
+ public ServiceURLAdapter(ServiceURL aServiceURL, String[] scopes) {
Assert.isNotNull(aServiceURL);
- setIServiceID(aServiceURL);
+ Assert.isNotNull(scopes);
+ setIServiceID(aServiceURL, scopes);
setURI(aServiceURL);
}
@@ -47,10 +52,10 @@ public class ServiceURLAdapter {
uri = URI.create(buf.toString());
}
- private void setIServiceID(ServiceURL aServiceURL) {
+ private void setIServiceID(ServiceURL aServiceURL, String[] scopes) {
Namespace namespace = IDFactory.getDefault().getNamespaceByName(JSLPNamespace.NAME);
try {
- serviceID = (IServiceID) namespace.createInstance(new Object[] {aServiceURL});
+ serviceID = (IServiceID) namespace.createInstance(new Object[] {aServiceURL, scopes});
} catch (IDCreateException e) {
// may never happen
Trace.catching(Activator.PLUGIN_ID, JSLPDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "setIServiceID", e); //$NON-NLS-1$
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/container/JSLPDiscoveryContainer.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/container/JSLPDiscoveryContainer.java
index cacf35b75..23ca2da16 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/container/JSLPDiscoveryContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/container/JSLPDiscoveryContainer.java
@@ -174,8 +174,8 @@ public class JSLPDiscoveryContainer extends AbstractDiscoveryContainerAdapter {
public IServiceInfo[] getServices(IServiceTypeID type) {
Assert.isNotNull(type);
try {
- JSLPServiceID sid = (JSLPServiceID) IDFactory.getDefault().createID(getConnectNamespace(), new Object[] {type.getInternal()});
- return convertToIServiceInfo(Activator.getDefault().getServiceURLs((JSLPServiceTypeID) sid.getServiceTypeID()));
+ JSLPServiceID sid = (JSLPServiceID) IDFactory.getDefault().createID(getConnectNamespace(), new Object[] {type, null});
+ return convertToIServiceInfo(Activator.getDefault().getServiceURLs((JSLPServiceTypeID) sid.getServiceTypeID()), type.getScopes());
} catch (IDCreateException e) {
Trace.catching(Activator.PLUGIN_ID, JSLPDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "getServices(IServiceTypeID)", e); //$NON-NLS-1$
} catch (ServiceLocationException e) {
@@ -191,9 +191,8 @@ public class JSLPDiscoveryContainer extends AbstractDiscoveryContainerAdapter {
Assert.isNotNull(aServiceInfo);
try {
JSLPServiceInfo si = new JSLPServiceInfo(aServiceInfo);
- //TODO-mkuppe honor the scope during service announcement
IServiceTypeID stid = si.getServiceID().getServiceTypeID();
- Activator.getDefault().register(si.getServiceURL(),/* Arrays.asList(stid.getScopes()),*/si.getServiceProperties().asProperties());
+ Activator.getDefault().register(si.getServiceURL(), Arrays.asList(stid.getScopes()), si.getServiceProperties().asProperties());
} catch (ServiceLocationException e) {
Trace.catching(Activator.PLUGIN_ID, JSLPDebugOptions.EXCEPTIONS_CATCHING, this.getClass(), "registerService(IServiceInfo)", e); //$NON-NLS-1$
throw new ECFException(e.getMessage(), e);
@@ -214,10 +213,14 @@ public class JSLPDiscoveryContainer extends AbstractDiscoveryContainerAdapter {
}
private IServiceInfo[] convertToIServiceInfo(Collection serviceURLs) {
+ return convertToIServiceInfo(serviceURLs, new String[0]);
+ }
+
+ private IServiceInfo[] convertToIServiceInfo(Collection serviceURLs, String[] scopes) {
List tmp = new ArrayList();
for (Iterator itr = serviceURLs.iterator(); itr.hasNext();) {
ServiceURL url = (ServiceURL) itr.next();
- IServiceInfo serviceInfo = new JSLPServiceInfo(new ServiceURLAdapter(url), -1, -1, new ServiceProperties());
+ IServiceInfo serviceInfo = new JSLPServiceInfo(new ServiceURLAdapter(url, scopes), -1, -1, new ServiceProperties());
tmp.add(serviceInfo);
}
return (IServiceInfo[]) tmp.toArray(new IServiceInfo[tmp.size()]);
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java
index 73628a93a..35701388f 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java
@@ -33,7 +33,7 @@ public class JSLPNamespace extends Namespace {
throw new IDCreateException(Messages.JSLPNamespace_3);
} else if (parameters[0] instanceof ServiceURL) { // handles internal creation
ServiceURL anURL = (ServiceURL) parameters[0];
- JSLPServiceTypeID stid = new JSLPServiceTypeID(this, anURL);
+ JSLPServiceTypeID stid = new JSLPServiceTypeID(this, anURL, (String[]) parameters[1]);
return new JSLPServiceID(this, stid, anURL.getHost());
} else if (parameters[0] instanceof JSLPServiceID) { // handles conversion call where conversion isn't necessary
return (ID) parameters[0];
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPServiceTypeID.java b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPServiceTypeID.java
index 145ae3b74..2c9b37db4 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPServiceTypeID.java
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPServiceTypeID.java
@@ -63,9 +63,13 @@ public class JSLPServiceTypeID extends ServiceTypeID {
}
}
- JSLPServiceTypeID(Namespace namespace, ServiceURL anURL) throws IDCreateException {
+ JSLPServiceTypeID(Namespace namespace, ServiceURL anURL, String[] scopes) throws IDCreateException {
this(namespace, anURL.getServiceType().toString());
+ if (scopes != null && scopes.length > 0) {
+ this.scopes = scopes;
+ }
+
// set the protocol if provided
String protocol = anURL.getProtocol();
if (protocol != null) {
@@ -86,7 +90,9 @@ public class JSLPServiceTypeID extends ServiceTypeID {
}
buf.append(":"); //$NON-NLS-1$
}
- st = new ServiceType(buf.toString());
+ // remove dangling colon
+ String string = buf.toString();
+ st = new ServiceType(string.substring(0, string.length() - 1));
}
/**

Back to the top