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);
+               }
+       }
 
 
        


Reply via email to