diff options
author | slewis | 2008-02-08 22:15:04 +0000 |
---|---|---|
committer | slewis | 2008-02-08 22:15:04 +0000 |
commit | cab5c07df8a96a28c0784f765b9891f29a28bf06 (patch) | |
tree | 596b862fc597b54e35eda85f946cc24dc77cda28 /providers | |
parent | 0b85a0fbc7c29f4d5f6e9d859d6e3d987b8074ad (diff) | |
download | org.eclipse.ecf-cab5c07df8a96a28c0784f765b9891f29a28bf06.tar.gz org.eclipse.ecf-cab5c07df8a96a28c0784f765b9891f29a28bf06.tar.xz org.eclipse.ecf-cab5c07df8a96a28c0784f765b9891f29a28bf06.zip |
Fix for bug 218306
Diffstat (limited to 'providers')
2 files changed, 19 insertions, 39 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java index c347a806a..046b94e9e 100644 --- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java +++ b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSDiscoveryContainer.java @@ -13,6 +13,7 @@ package org.eclipse.ecf.provider.jmdns.container; import java.io.IOException; import java.io.InvalidObjectException; import java.net.InetAddress; +import java.net.URI; import java.util.*; import javax.jmdns.*; import javax.jmdns.ServiceInfo; @@ -30,6 +31,9 @@ import org.eclipse.ecf.internal.provider.jmdns.*; import org.eclipse.ecf.provider.jmdns.identity.JMDNSNamespace; public class JMDNSDiscoveryContainer extends AbstractDiscoveryContainerAdapter implements IDiscoveryService, ServiceListener, ServiceTypeListener { + + private static final String SCHEME_PROPERTY = "jmdns.ptcl"; //$NON-NLS-1$ + public static final int DEFAULT_REQUEST_TIMEOUT = 3000; private static int instanceCount = 0; @@ -360,17 +364,20 @@ public class JMDNSDiscoveryContainer extends AbstractDiscoveryContainerAdapter i final int priority = serviceInfo.getPriority(); final int weight = serviceInfo.getWeight(); final Properties props = new Properties(); + String uriProtocol = null; for (final Enumeration e = serviceInfo.getPropertyNames(); e.hasMoreElements();) { final String name = (String) e.nextElement(); - Object value = serviceInfo.getPropertyString(name); - if (value == null) - value = serviceInfo.getPropertyBytes(name); - if (value != null) - props.put(name, value); + if (name.equals(SCHEME_PROPERTY)) + uriProtocol = serviceInfo.getPropertyString(name); + else { + Object value = serviceInfo.getPropertyString(name); + if (value == null) + value = serviceInfo.getPropertyBytes(name); + if (value != null) + props.put(name, value); + } } - final ServiceProperties svcProperties = new ServiceProperties(props); - final IServiceInfo newInfo = new JMDNSServiceInfo(addr, sID, port, priority, weight, svcProperties); - return newInfo; + return new org.eclipse.ecf.discovery.ServiceInfo(uriProtocol, addr.getHostAddress(), port, sID, priority, weight, new ServiceProperties(props)); } private ServiceID createServiceID(String type, String name) { @@ -399,7 +406,10 @@ public class JMDNSDiscoveryContainer extends AbstractDiscoveryContainerAdapter i } } } - final ServiceInfo si = new ServiceInfo(sID.getServiceTypeID().getInternal(), sID.getServiceName(), serviceInfo.getLocation().getPort(), serviceInfo.getPriority(), serviceInfo.getWeight(), props); + // Add URI scheme to props + URI location = serviceInfo.getLocation(); + props.put(SCHEME_PROPERTY, location.getScheme()); + final ServiceInfo si = new ServiceInfo(sID.getServiceTypeID().getInternal(), sID.getServiceName(), location.getPort(), serviceInfo.getPriority(), serviceInfo.getWeight(), props); return si; } diff --git a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSServiceInfo.java b/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSServiceInfo.java deleted file mode 100644 index d970b13d8..000000000 --- a/providers/bundles/org.eclipse.ecf.provider.jmdns/src/org/eclipse/ecf/provider/jmdns/container/JMDNSServiceInfo.java +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2004 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.provider.jmdns.container; - -import java.net.*; -import org.eclipse.ecf.discovery.IServiceProperties; -import org.eclipse.ecf.discovery.ServiceInfo; -import org.eclipse.ecf.discovery.identity.ServiceID; -import org.eclipse.ecf.provider.jmdns.identity.JMDNSNamespace; - -public class JMDNSServiceInfo extends ServiceInfo { - - private static final long serialVersionUID = -5229813165370975600L; - public static final String PROP_PROTOCOL_NAME = "protocol"; //$NON-NLS-1$ - public static final String PROP_PATH_NAME = "path"; //$NON-NLS-1$ - public static final String SLASH = "/"; //$NON-NLS-1$ - - public JMDNSServiceInfo(InetAddress address, ServiceID id, int port, int priority, int weight, IServiceProperties props) throws URISyntaxException { - super(new URI(JMDNSNamespace.JMDNS_SCHEME, null, address.getHostAddress(), port, null, null, null), id, priority, weight, props); - } - -} |