Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Alexander Kuppe2010-06-26 11:22:44 +0000
committerMarkus Alexander Kuppe2010-06-26 11:22:44 +0000
commit3afbfa256cd03db8283d137e69fd97e41a5f1765 (patch)
tree05f35b72473a1316ddc711df265250c3e7cab6f4
parentd5c12f84eef1e8b4d7baa5d6a4eb10aaad5bebb9 (diff)
downloadorg.eclipse.ecf-3afbfa256cd03db8283d137e69fd97e41a5f1765.tar.gz
org.eclipse.ecf-3afbfa256cd03db8283d137e69fd97e41a5f1765.tar.xz
org.eclipse.ecf-3afbfa256cd03db8283d137e69fd97e41a5f1765.zip
NEW - bug 317798: [Discovery][DNS-SD] Create/register IDiscoveryAdvertiser container/service
https://bugs.eclipse.org/bugs/show_bug.cgi?id=317798
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/Activator.java140
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java4
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserWithoutRegister.java2
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTest.java4
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTestWithWildcards.java2
-rw-r--r--tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryWithoutRegistration.java2
6 files changed, 102 insertions, 52 deletions
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/Activator.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/Activator.java
index c3b5b5a80..338d078df 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/Activator.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/Activator.java
@@ -13,12 +13,12 @@ package org.eclipse.ecf.tests.provider.dnssd;
import java.util.Dictionary;
import java.util.Hashtable;
+import org.eclipse.ecf.discovery.IDiscoveryAdvertiser;
import org.eclipse.ecf.discovery.IDiscoveryLocator;
import org.eclipse.ecf.provider.dnssd.IDnsSdDiscoveryConstants;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
-import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceEvent;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceReference;
@@ -29,10 +29,13 @@ public class Activator implements BundleActivator {
private static Activator instance;
private IDiscoveryLocator discoveryLocator;
+ private IDiscoveryAdvertiser discoveryAdvertiser;
- private ServiceListener listener;
+ private ServiceListener locListener;
+ private ServiceListener advListener;
- private final Object lock = new Object();
+ private final Object locLock = new Object();
+ private final Object advLock = new Object();
public Activator() {
instance = this;
@@ -42,61 +45,89 @@ public class Activator implements BundleActivator {
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
public void start(final BundleContext context) throws Exception {
- String filter = "";
-
final ServiceReference configAdminServiceRef = context
.getServiceReference(ConfigurationAdmin.class.getName());
-
- if (configAdminServiceRef != null) {
- ConfigurationAdmin configAdmin = (ConfigurationAdmin) context
- .getService(configAdminServiceRef);
-
- Configuration config = configAdmin.createFactoryConfiguration(
- DnsSdTestHelper.ECF_DISCOVERY_DNSSD, null);
- Dictionary properties = new Hashtable();
- properties.put(IDnsSdDiscoveryConstants.CA_SEARCH_PATH, new String[]{DnsSdTestHelper.DOMAIN});
- properties.put(IDnsSdDiscoveryConstants.CA_RESOLVER, DnsSdTestHelper.DNS_RESOLVER);
- properties.put(IDnsSdDiscoveryConstants.CA_TSIG_KEY, DnsSdTestHelper.TSIG_KEY);
- properties.put(IDnsSdDiscoveryConstants.CA_TSIG_KEY_NAME, DnsSdTestHelper.TSIG_KEY_NAME);
- config.update(properties);
-
- filter = "(" + Constants.SERVICE_PID + "=" + config.getPid() + ")";
- } else {
+ if (configAdminServiceRef == null) {
System.err.println("You don't have config admin deployed. Some tests will fail that require configuration!");
- filter = "(" + Constants.OBJECTCLASS + "=" + IDiscoveryLocator.class.getName() + ")";
+ return;
}
+ final ConfigurationAdmin configAdmin = (ConfigurationAdmin) context.getService(configAdminServiceRef);
+
+ Configuration config = configAdmin.createFactoryConfiguration(
+ DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".locator", null);
+ Dictionary properties = new Hashtable();
+ properties.put(IDnsSdDiscoveryConstants.CA_SEARCH_PATH, new String[]{DnsSdTestHelper.DOMAIN});
+ properties.put(IDnsSdDiscoveryConstants.CA_RESOLVER, DnsSdTestHelper.DNS_RESOLVER);
+ properties.put(IDnsSdDiscoveryConstants.CA_TSIG_KEY, DnsSdTestHelper.TSIG_KEY);
+ properties.put(IDnsSdDiscoveryConstants.CA_TSIG_KEY_NAME, DnsSdTestHelper.TSIG_KEY_NAME);
+ config.update(properties);
+
+ String filter = "(" + Constants.SERVICE_PID + "=" + config.getPid() + ")";
// add the service listener
- listener = new ServiceListener() {
+ locListener = new ServiceListener() {
public void serviceChanged(ServiceEvent event) {
switch (event.getType()) {
case ServiceEvent.REGISTERED:
ServiceReference serviceReference = event.getServiceReference();
discoveryLocator = (IDiscoveryLocator) context.getService(serviceReference);
- synchronized (lock) {
- lock.notifyAll();
+ synchronized (locLock) {
+ locLock.notifyAll();
}
}
}
};
- context.addServiceListener(listener, filter);
+ context.addServiceListener(locListener, filter);
// try to get the service initially
- ServiceReference[] references = null;
- try {
- references = context.getServiceReferences(IDiscoveryLocator.class.getName(), filter);
- } catch (InvalidSyntaxException e) {
- // may never happen
- e.printStackTrace();
- }
- if(references == null) {
- return;
+ ServiceReference[] references = context.getServiceReferences(IDiscoveryLocator.class.getName(), filter);
+ if(references != null) {
+ for (int i = 0; i < references.length;) {
+ ServiceReference serviceReference = references[i];
+ discoveryLocator = (IDiscoveryLocator) context.getService(serviceReference);
+ synchronized (locLock) {
+ locLock.notifyAll();
+ }
+ }
}
- for (int i = 0; i < references.length;) {
- ServiceReference serviceReference = references[i];
- discoveryLocator = (IDiscoveryLocator) context.getService(serviceReference);
- synchronized (lock) {
- lock.notifyAll();
+
+
+ // advertiser
+ config = configAdmin.createFactoryConfiguration(
+ DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".advertiser", null);
+ properties = new Hashtable();
+ properties.put(IDnsSdDiscoveryConstants.CA_SEARCH_PATH, new String[]{DnsSdTestHelper.DOMAIN});
+ properties.put(IDnsSdDiscoveryConstants.CA_RESOLVER, DnsSdTestHelper.DNS_RESOLVER);
+ properties.put(IDnsSdDiscoveryConstants.CA_TSIG_KEY, DnsSdTestHelper.TSIG_KEY);
+ properties.put(IDnsSdDiscoveryConstants.CA_TSIG_KEY_NAME, DnsSdTestHelper.TSIG_KEY_NAME);
+ config.update(properties);
+
+ filter = "(" + Constants.SERVICE_PID + "=" + config.getPid() + ")";
+
+ // add the service listener
+ advListener = new ServiceListener() {
+ public void serviceChanged(ServiceEvent event) {
+ switch (event.getType()) {
+ case ServiceEvent.REGISTERED:
+ ServiceReference serviceReference = event.getServiceReference();
+ discoveryAdvertiser = (IDiscoveryAdvertiser) context.getService(serviceReference);
+ synchronized (advLock) {
+ advLock.notifyAll();
+ }
+ }
+ }
+ };
+ context.addServiceListener(advListener, filter);
+
+ // try to get the service initially
+ references = context.getServiceReferences(IDiscoveryAdvertiser.class.getName(), filter);
+ if(references != null) {
+ for (int i = 0; i < references.length;) {
+ ServiceReference serviceReference = references[i];
+ discoveryAdvertiser = (IDiscoveryAdvertiser) context.getService(serviceReference);
+ synchronized (advLock) {
+ advLock.notifyAll();
+ }
}
}
}
@@ -105,9 +136,13 @@ public class Activator implements BundleActivator {
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
- if(listener != null) {
- context.removeServiceListener(listener);
- listener = null;
+ if(locListener != null) {
+ context.removeServiceListener(locListener);
+ locListener = null;
+ }
+ if(advListener != null) {
+ context.removeServiceListener(advListener);
+ advListener = null;
}
}
@@ -118,8 +153,8 @@ public class Activator implements BundleActivator {
public IDiscoveryLocator getDiscoveryLocator() {
if (discoveryLocator == null) {
try {
- synchronized (lock) {
- lock.wait();
+ synchronized (locLock) {
+ locLock.wait(2000); // wait 2 few for config admin
}
} catch (InterruptedException e) {
// may never happen
@@ -129,4 +164,19 @@ public class Activator implements BundleActivator {
}
return discoveryLocator;
}
+
+ public IDiscoveryAdvertiser getDiscoveryAdvertiser() {
+ if (discoveryAdvertiser == null) {
+ try {
+ synchronized (advLock) {
+ advLock.wait(2000); // wait a few sec for config admin
+ }
+ } catch (InterruptedException e) {
+ // may never happen
+ e.printStackTrace();
+ return null;
+ }
+ }
+ return discoveryAdvertiser;
+ }
}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java
index c434149d7..8f76c3c83 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserServiceTest.java
@@ -28,7 +28,7 @@ import org.xbill.DNS.ZoneTransferIn;
public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest {
public DnsSdAdvertiserServiceTest() {
- super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD);
+ super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".advertiser");
setNamingAuthority(DnsSdTestHelper.NAMING_AUTH);
setScope(DnsSdTestHelper.REG_DOMAIN);
setServices(new String[]{DnsSdTestHelper.REG_SCHEME});
@@ -72,7 +72,7 @@ public class DnsSdAdvertiserServiceTest extends AbstractDiscoveryTest {
* @see org.eclipse.ecf.tests.discovery.AbstractDiscoveryTest#getDiscoveryLocator()
*/
protected IDiscoveryAdvertiser getDiscoveryAdvertiser() {
- return (IDiscoveryAdvertiser) Activator.getDefault().getDiscoveryLocator();
+ return Activator.getDefault().getDiscoveryAdvertiser();
}
/* (non-Javadoc)
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserWithoutRegister.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserWithoutRegister.java
index b54cb2a95..70897e9eb 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserWithoutRegister.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdAdvertiserWithoutRegister.java
@@ -16,6 +16,6 @@ public class DnsSdAdvertiserWithoutRegister extends
DiscoveryTestsWithoutRegister {
public DnsSdAdvertiserWithoutRegister() {
- super("ecf.discovery.dnssd.advertiser");
+ super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".advertiser");
}
}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTest.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTest.java
index aa981d0f7..ed736b75d 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTest.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTest.java
@@ -24,12 +24,12 @@ import org.eclipse.ecf.tests.discovery.DiscoveryServiceTest;
public class DnsSdDiscoveryServiceTest extends DiscoveryServiceTest {
public DnsSdDiscoveryServiceTest() {
- this(DnsSdTestHelper.ECF_DISCOVERY_DNSSD, DnsSdTestHelper.DOMAIN, DnsSdTestHelper.SCHEME, DnsSdTestHelper.PROTO);
+ this(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".locator", DnsSdTestHelper.DOMAIN, DnsSdTestHelper.SCHEME, DnsSdTestHelper.PROTO);
}
public DnsSdDiscoveryServiceTest(String aContainer, String aDomain,
String aService, String aProtocol) {
- super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD);
+ super(aContainer);
setNamingAuthority(DnsSdTestHelper.NAMING_AUTH);
setScope(aDomain);
setServices(new String[]{aService});
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTestWithWildcards.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTestWithWildcards.java
index 1f329cd6b..b8a181501 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTestWithWildcards.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryServiceTestWithWildcards.java
@@ -14,6 +14,6 @@ package org.eclipse.ecf.tests.provider.dnssd;
public class DnsSdDiscoveryServiceTestWithWildcards extends DnsSdDiscoveryServiceTest {
public DnsSdDiscoveryServiceTestWithWildcards() {
- super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD, DnsSdTestHelper.DOMAIN, "", "");
+ super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".locator", DnsSdTestHelper.DOMAIN, "", "");
}
}
diff --git a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryWithoutRegistration.java b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryWithoutRegistration.java
index 52086af82..b15d656ef 100644
--- a/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryWithoutRegistration.java
+++ b/tests/bundles/org.eclipse.ecf.tests.provider.dnssd/src/org/eclipse/ecf/tests/provider/dnssd/DnsSdDiscoveryWithoutRegistration.java
@@ -16,7 +16,7 @@ public class DnsSdDiscoveryWithoutRegistration extends
DiscoveryTestsWithoutRegister {
public DnsSdDiscoveryWithoutRegistration() {
- super("ecf.discovery.dnssd.locator");
+ super(DnsSdTestHelper.ECF_DISCOVERY_DNSSD + ".locator");
}
}

Back to the top