Author: furfari
Date: Tue Aug 5 13:40:31 2008
New Revision: 682938
URL: http://svn.apache.org/viewvc?rev=682938&view=rev
Log:
FELIX-642 modified Tester to register automatically many UPnPEventListeners
for all discovered devices
Modified:
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/Activator.java
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/UPnPSubscriber.java
Modified:
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/Activator.java
URL:
http://svn.apache.org/viewvc/felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/Activator.java?rev=682938&r1=682937&r2=682938&view=diff
==============================================================================
---
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/Activator.java
(original)
+++
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/Activator.java
Tue Aug 5 13:40:31 2008
@@ -20,8 +20,16 @@
package org.apache.felix.upnp.tester;
+import java.util.Dictionary;
+import java.util.HashMap;
+
+import org.apache.felix.upnp.basedriver.importer.core.event.thread.SubScriber;
+import org.apache.felix.upnp.tester.discovery.DeviceNode;
+import org.apache.felix.upnp.tester.discovery.DeviceNodeListener;
+import org.apache.felix.upnp.tester.discovery.RootDeviceListener;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
+import org.osgi.service.upnp.UPnPEventListener;
/*
* @author <a href="mailto:[EMAIL PROTECTED]">Felix Project Team</a>
@@ -31,15 +39,53 @@
public static BundleContext context;
private ControlPoint cp;
+
+ private RootDeviceListener listener;
/**
* @see
org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
*/
- public void start(BundleContext context) throws Exception {
+ public void start(final BundleContext context) throws Exception {
Activator.context = context;
cp = new ControlPoint();
+ new Thread (){
+ public void run(){
+ doTest();
+ }
+ }.start();
+
}
+ public void doTest(){
+ System.out.println("starting test");
+ listener = new RootDeviceListener();
+ listener.setDeviceNodeListener(new DeviceNodeListener(){
+ HashMap map = new HashMap();
+ int countNotify = 1;
+ int countDevices = 1;
+ public void deviceDetected(DeviceNode d) {
+ String udn = d.toString();
+ System.out.println("device DETECTED " + udn + "
### " + countDevices++);
+ UPnPSubscriber subscriber = new
UPnPSubscriber(context, new UPnPEventListener(){
+ public void notifyUPnPEvent(String
arg0, String arg1, Dictionary arg2) {
+ System.out.println(arg0 + " " +
arg1 + arg2.toString() + " " + countNotify++);
+ }
+ });
+ map.put(udn, subscriber);
+ subscriber.subscribeAllServicesOF(udn);
+ }
+
+ public void rootDeviceUnplugged(String udn) {
+ System.out.println("device REMOVED " + udn + "
### " + (--countDevices));
+ UPnPSubscriber subscriber =
(UPnPSubscriber)map.remove(udn);
+ subscriber.unsubscribeAllServicesOF(udn);
+ if (countDevices==1) countNotify =1;
+ }
+
+ });
+ listener.activate();
+
+ }
/**
* @see
org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
*/
Modified:
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/UPnPSubscriber.java
URL:
http://svn.apache.org/viewvc/felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/UPnPSubscriber.java?rev=682938&r1=682937&r2=682938&view=diff
==============================================================================
---
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/UPnPSubscriber.java
(original)
+++
felix/sandbox/furfari/Bug-642/tester/src/main/java/org/apache/felix/upnp/tester/UPnPSubscriber.java
Tue Aug 5 13:40:31 2008
@@ -74,6 +74,12 @@
hash.put(keys, new Subscription(keys));
}
}
+ public void subscribeAllServicesOF(String deviceId){
+ String keys = "(" + UPnPDevice.ID + "="+ deviceId + ")";
+ if (hash.get(keys) == null){
+ hash.put(keys, new Subscription(keys));
+ }
+ }
public void unsubscribe(String deviceId, String serviceId){
String keys = "(&(" + UPnPDevice.ID + "="+ deviceId + ")(" +
UPnPService.ID + "=" + serviceId + "))";
@@ -83,6 +89,14 @@
hash.remove(keys);
}
}
+ public void unsubscribeAllServicesOF(String deviceId){
+ String keys = "(" + UPnPDevice.ID + "="+ deviceId + ")";
+ if (hash.containsKey(keys)) {
+ Subscription subscription = (Subscription) hash.get(keys);
+ subscription.unsubscribe();
+ hash.remove(keys);
+ }
+ }