Wrap upnp events in an immutable object (FELIX-68)
git-svn-id: https://svn.apache.org/repos/asf/incubator/felix/trunk@406354 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java b/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java
index 5a35eba..3438206 100644
--- a/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java
+++ b/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java
@@ -17,6 +17,7 @@
package org.apache.felix.eventadmin.bridge.upnp;
import java.util.Dictionary;
+import java.util.Enumeration;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
@@ -122,13 +123,65 @@
if(null != eventAdmin)
{
+ final Dictionary immutableEvents = new Dictionary(){
+
+ public int size()
+ {
+ return events.size();
+ }
+
+ public boolean isEmpty()
+ {
+ return events.isEmpty();
+ }
+
+ public Enumeration keys()
+ {
+ return events.keys();
+ }
+
+ public Enumeration elements()
+ {
+ return events.elements();
+ }
+
+ public Object get(Object arg0)
+ {
+ return events.get(arg0);
+ }
+
+ public Object put(Object arg0, Object arg1)
+ {
+ throw new IllegalStateException("Event Properties may not be changed");
+ }
+
+ public Object remove(Object arg0)
+ {
+ throw new IllegalStateException("Event Properties may not be changed");
+ }
+
+ public boolean equals(Object arg0)
+ {
+ return events.equals(arg0);
+ }
+
+ public int hashCode()
+ {
+ return events.hashCode();
+ }
+
+ public String toString()
+ {
+ return events.toString();
+ }
+ };
+
eventAdmin.postEvent(new Event("org/osgi/service/upnp/UPnPEvent",
new Hashtable(){{
put("upnp.deviceId", deviceId);
put("upnp.serviceId", serviceId);
- put("upnp.events", events);
+ put("upnp.events", immutableEvents);
}}));
-// TODO: See 113.3.2
m_context.ungetService(ref);
}