Implemented ServiceEvent.MODIFIED for tracking UPnPEventListeners in the UPnP examples  (Felix-68)

git-svn-id: https://svn.apache.org/repos/asf/incubator/felix/trunk@416694 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.felix.upnp.sample.binaryLight/src/main/java/org/apache/felix/upnp/sample/binaryLight/UPnPEventNotifier.java b/org.apache.felix.upnp.sample.binaryLight/src/main/java/org/apache/felix/upnp/sample/binaryLight/UPnPEventNotifier.java
index 65c771e..8039657 100644
--- a/org.apache.felix.upnp.sample.binaryLight/src/main/java/org/apache/felix/upnp/sample/binaryLight/UPnPEventNotifier.java
+++ b/org.apache.felix.upnp.sample.binaryLight/src/main/java/org/apache/felix/upnp/sample/binaryLight/UPnPEventNotifier.java
@@ -47,13 +47,17 @@
 	Properties UPnPTargetListener;

 	String serviceId;

 	Vector upnpListeners = new Vector();

+	private String serviceType;

+	private String deviceType;

 	

 	public UPnPEventNotifier(BundleContext context,String deviceId,UPnPService service,EventSource source){

 		this.context=context;

-		this.deviceId=deviceId;

 		this.service=service;

 		this.source=source;

+		this.deviceId=deviceId;

+		this.deviceType = "urn:schemas-upnp-org:device:BinaryLight:1";

 		this.serviceId=service.getId();

+		this.serviceType = service.getType();

 		setupUPnPListenerHouseKeeping(deviceId);

 	}

 	

@@ -64,6 +68,8 @@
 		UPnPTargetListener = new Properties();

 		UPnPTargetListener.put(UPnPDevice.ID,deviceId);

 		UPnPTargetListener.put(UPnPService.ID,serviceId);

+		UPnPTargetListener.put(UPnPService.TYPE,serviceType);

+		UPnPTargetListener.put(UPnPDevice.TYPE,deviceType);

 		String ANY_UPnPEventListener = "("+Constants.OBJECTCLASS+"="+UPnPEventListener.class.getName()+")";

 		

 		ServiceReference[] listeners = null; 

@@ -150,6 +156,15 @@
 			};break;

 			

 			case ServiceEvent.MODIFIED:{				

+	               ServiceReference sr = e.getServiceReference();

+	               Filter filter = (Filter)	sr.getProperty(UPnPEventListener.UPNP_FILTER);

+	               removeListener(sr);

+	               if (filter == null)

+	                   addNewListener(sr);

+	               else {

+	                   if (filter.match(UPnPTargetListener))

+	                       addNewListener(sr);

+	               }

 			};break;

 			

 			case ServiceEvent.UNREGISTERING:{	

diff --git a/org.apache.felix.upnp.sample.clock/src/main/java/org/apache/felix/upnp/sample/clock/UPnPEventNotifier.java b/org.apache.felix.upnp.sample.clock/src/main/java/org/apache/felix/upnp/sample/clock/UPnPEventNotifier.java
index b7c41df..fe6ce2c 100644
--- a/org.apache.felix.upnp.sample.clock/src/main/java/org/apache/felix/upnp/sample/clock/UPnPEventNotifier.java
+++ b/org.apache.felix.upnp.sample.clock/src/main/java/org/apache/felix/upnp/sample/clock/UPnPEventNotifier.java
@@ -156,6 +156,15 @@
 			};break;

 			

 			case ServiceEvent.MODIFIED:{				

+	               ServiceReference sr = e.getServiceReference();

+	               Filter filter = (Filter)	sr.getProperty(UPnPEventListener.UPNP_FILTER);

+	               removeListener(sr);

+	               if (filter == null)

+	                   addNewListener(sr);

+	               else {

+	                   if (filter.match(UPnPTargetListener))

+	                       addNewListener(sr);

+	               }

 			};break;

 			

 			case ServiceEvent.UNREGISTERING:{	

diff --git a/org.apache.felix.upnp.sample.tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPEventNotifier.java b/org.apache.felix.upnp.sample.tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPEventNotifier.java
index 58a48a5..398d67b 100644
--- a/org.apache.felix.upnp.sample.tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPEventNotifier.java
+++ b/org.apache.felix.upnp.sample.tv/src/main/java/org/apache/felix/upnp/sample/tv/UPnPEventNotifier.java
@@ -156,6 +156,15 @@
 			};break;

 			

 			case ServiceEvent.MODIFIED:{				

+	               ServiceReference sr = e.getServiceReference();

+	               Filter filter = (Filter)	sr.getProperty(UPnPEventListener.UPNP_FILTER);

+	               removeListener(sr);

+	               if (filter == null)

+	                   addNewListener(sr);

+	               else {

+	                   if (filter.match(UPnPTargetListener))

+	                       addNewListener(sr);

+	               }

 			};break;

 			

 			case ServiceEvent.UNREGISTERING:{