Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkuppe2008-06-02 11:40:04 +0000
committermkuppe2008-06-02 11:40:04 +0000
commit793f3e8252b5405d19a43be326208d2220b92cd0 (patch)
tree11876744d831f89f0707bbdf761cba5e7b3a466c
parent01a2e8d4c47eb631416ae72c5d91a2d5917b83b1 (diff)
downloadorg.eclipse.ecf-793f3e8252b5405d19a43be326208d2220b92cd0.tar.gz
org.eclipse.ecf-793f3e8252b5405d19a43be326208d2220b92cd0.tar.xz
org.eclipse.ecf-793f3e8252b5405d19a43be326208d2220b92cd0.zip
RESOLVED - bug 218310: [Discovery][jSLP] ServiceType in jSLP always starts with "_service."
https://bugs.eclipse.org/bugs/show_bug.cgi?id=218310 FORWARD PORT from Revision_2_0
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF3
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/container/JSLPDiscoveryContainer.java2
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPNamespace.java88
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.jslp/src/org/eclipse/ecf/provider/jslp/identity/JSLPServiceTypeID.java18
4 files changed, 65 insertions, 46 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
index d98e2de68..f847620e5 100644
--- a/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
+++ b/providers/bundles/org.eclipse.ecf.provider.jslp/META-INF/MANIFEST.MF
@@ -19,6 +19,7 @@ Require-Bundle: org.eclipse.ecf.discovery,
Bundle-RequiredExecutionEnvironment: CDC-1.1/Foundation-1.1,
J2SE-1.4
Bundle-ClassPath: .
-Export-Package: org.eclipse.ecf.provider.jslp.container,
+Export-Package: org.eclipse.ecf.internal.provider.jslp;x-friends:="org.eclipse.ecf.tests.provider.jslp",
+ org.eclipse.ecf.provider.jslp.container,
org.eclipse.ecf.provider.jslp.identity
Bundle-ActivationPolicy: lazy
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 8f6ed6403..a8ee52f00 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
@@ -147,7 +147,7 @@ public class JSLPDiscoveryContainer extends AbstractDiscoveryContainerAdapter im
ServiceLocationEnumeration slenum = Activator.getDefault().getLocator().findServiceTypes(null, null);
for (; slenum.hasMoreElements();) {
ServiceType st = new ServiceType((String) slenum.nextElement());
- IServiceID sid = (IServiceID) getConnectNamespace().createInstance(new Object[] {st.toString()});
+ IServiceID sid = (IServiceID) getConnectNamespace().createInstance(new Object[] {st, ""}); //$NON-NLS-1$
result.add(sid.getServiceTypeID());
}
} catch (ServiceLocationException e) {
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 65f94b319..49745b265 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
@@ -10,9 +10,9 @@
******************************************************************************/
package org.eclipse.ecf.provider.jslp.identity;
+import ch.ethz.iks.slp.ServiceType;
import ch.ethz.iks.slp.ServiceURL;
import org.eclipse.ecf.core.identity.*;
-import org.eclipse.ecf.core.util.StringUtils;
import org.eclipse.ecf.discovery.identity.*;
import org.eclipse.ecf.internal.provider.jslp.Messages;
@@ -23,60 +23,68 @@ public class JSLPNamespace extends Namespace {
public static final String NAME = "ecf.namespace.slp"; //$NON-NLS-1$
- private String getInitFromExternalForm(Object[] args) {
- if (args == null || args.length < 1 || args[0] == null)
- return null;
- if (args[0] instanceof String) {
- String arg = (String) args[0];
- if (arg.startsWith(getScheme() + Namespace.SCHEME_SEPARATOR)) {
- int index = arg.indexOf(Namespace.SCHEME_SEPARATOR);
- if (index >= arg.length())
- return null;
- return arg.substring(index + 1);
- }
- }
- return null;
- }
-
/* (non-Javadoc)
* @see org.eclipse.ecf.core.identity.Namespace#createInstance(java.lang.Object[])
*/
public ID createInstance(Object[] parameters) throws IDCreateException {
+ // error case
if (parameters == null || parameters.length < 1 || parameters.length > 2) {
throw new IDCreateException(Messages.JSLPNamespace_2);
+
+ // error case
} else if (parameters[0] == null || parameters[0].equals("")) { //$NON-NLS-1$
throw new IDCreateException(Messages.JSLPNamespace_3);
- } else if (parameters[0] instanceof ServiceURL) { // handles internal creation
+
+ // create by jSLP ServiceURL
+ } else if (parameters[0] instanceof ServiceURL) {
ServiceURL anURL = (ServiceURL) parameters[0];
- JSLPServiceTypeID stid = new JSLPServiceTypeID(this, anURL, (String[]) parameters[1]);
+ IServiceTypeID 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
+
+ // conversion call where conversion isn't necessary
+ } else if (parameters[0] instanceof JSLPServiceID) {
return (ID) parameters[0];
+
} else if (parameters[0] instanceof IServiceID) {
IServiceID anId = (IServiceID) parameters[0];
- return createInstance(new Object[] {anId.getServiceTypeID(), parameters[1]});
+ parameters[0] = anId.getServiceTypeID();
+ return createInstance(parameters);
+
+ // create by ECF discovery generic IServiceTypeID (but not JSLPServiceID!!!)
} else if (parameters[0] instanceof IServiceTypeID) {
IServiceTypeID stid = (IServiceTypeID) parameters[0];
- return createInstance(new Object[] {stid.getName(), parameters[1]});
- } else if (parameters[0] instanceof String) { // creates from either external or internal string
- String init = getInitFromExternalForm(parameters);
- String type = (init != null) ? init : (String) parameters[0];
- IServiceTypeID stid = null;
- if (StringUtils.contains(type, "._")) { //$NON-NLS-1$ // converts external to internal
- ServiceTypeID aStid = new ServiceTypeID(this, type);
- stid = new JSLPServiceTypeID(this, aStid);
- } else {
- stid = new JSLPServiceTypeID(this, type);
- }
- String name = null;
- if (parameters.length > 1) {
- try {
- name = (String) parameters[1];
- } catch (final ClassCastException e) {
- throw new IDCreateException(Messages.JSLPNamespace_4);
- }
- }
+ parameters[0] = stid.getName();
+ return createInstance(parameters);
+
+ // create by jSLP ServiceType
+ } else if (parameters[0] instanceof ServiceType) {
+ IServiceTypeID stid = new JSLPServiceTypeID(this, (ServiceType) parameters[0]);
+ return new JSLPServiceID(this, stid, (String) parameters[1]);
+
+ // create by jSLP ServiceType String representation (from external)
+ } else if (parameters[0] instanceof String && ((String) parameters[0]).startsWith("service:")) { //$NON-NLS-1$
+ parameters[0] = new ServiceType((String) parameters[0]);
+ return createInstance(parameters);
+
+ // create by ECF discovery generic String representation
+ } else if (parameters[0] instanceof String && ((String) parameters[0]).startsWith("_")) { //$NON-NLS-1$
+ String type = (String) parameters[0];
+ String name = (String) parameters[1];
+ IServiceTypeID stid = new JSLPServiceTypeID(this, new ServiceTypeID(this, type));
return new JSLPServiceID(this, stid, name);
+
+ // create by "jslp:..."
+ } else if (parameters[0] instanceof String && ((String) parameters[0]).startsWith(getScheme() + Namespace.SCHEME_SEPARATOR)) {
+ String str = (String) parameters[0];
+ int index = str.indexOf(Namespace.SCHEME_SEPARATOR);
+ parameters[0] = str.substring(index + 1);
+ return createInstance(parameters);
+
+ // error case second parameter not a String
+ } else if (parameters.length == 2 && parameters[1] != null && !(parameters[1] instanceof String)) {
+ throw new IDCreateException(Messages.JSLPNamespace_4);
+
+ // error case
} else {
throw new IDCreateException(Messages.JSLPNamespace_3);
}
@@ -95,6 +103,6 @@ public class JSLPNamespace extends Namespace {
* @see org.eclipse.ecf.core.identity.Namespace#getSupportedParameterTypesForCreateInstance()
*/
public Class[][] getSupportedParameterTypes() {
- return new Class[][] { {String.class}, {String.class, String.class}, {ServiceURL.class}, {IServiceTypeID.class}, {IServiceID.class}};
+ return new Class[][] { {String.class}, {String.class, String.class}, {ServiceURL.class}, {IServiceTypeID.class}, {IServiceID.class}, {ServiceType.class, String.class}};
}
}
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 b40389c6d..427fe24e3 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
@@ -28,7 +28,7 @@ public class JSLPServiceTypeID extends ServiceTypeID {
private static final long serialVersionUID = -4558132760112793805L;
- private ServiceType st;
+ private final ServiceType st;
protected JSLPServiceTypeID(final Namespace namespace, final String type) throws IDCreateException {
super(namespace);
@@ -59,7 +59,7 @@ public class JSLPServiceTypeID extends ServiceTypeID {
}
JSLPServiceTypeID(final Namespace namespace, final ServiceURL anURL, final String[] scopes) throws IDCreateException {
- this(namespace, anURL.getServiceType().toString());
+ this(namespace, anURL.getServiceType());
if (scopes != null && scopes.length > 0) {
this.scopes = scopes;
@@ -73,10 +73,10 @@ public class JSLPServiceTypeID extends ServiceTypeID {
}
}
- JSLPServiceTypeID(final JSLPNamespace namespace, final IServiceTypeID type) {
+ JSLPServiceTypeID(final Namespace namespace, final IServiceTypeID type) {
super(namespace, type);
- StringBuffer buf = new StringBuffer();
+ StringBuffer buf = new StringBuffer("service:"); //$NON-NLS-1$
for (int i = 0; i < services.length; i++) {
buf.append(services[i]);
// #228876
@@ -91,6 +91,16 @@ public class JSLPServiceTypeID extends ServiceTypeID {
st = new ServiceType(string.substring(0, string.length() - 1));
}
+ JSLPServiceTypeID(final Namespace namespace, final ServiceType aServiceType) throws IDCreateException {
+ this(namespace, aServiceType.toString());
+ final String[] newServices = new String[services.length - 1];
+ for (int i = 0; i < services.length - 1; i++) {
+ newServices[i] = services[i + 1];
+ }
+ services = newServices;
+ createType();
+ }
+
/**
* @return the jSLP ServiceType
*/

Back to the top