You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2006/05/14 17:15:34 UTC

svn commit: r406354 - /incubator/felix/trunk/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java

Author: pauls
Date: Sun May 14 08:15:33 2006
New Revision: 406354

URL: http://svn.apache.org/viewcvs?rev=406354&view=rev
Log:
Wrap upnp events in an immutable object (FELIX-68)

Modified:
    incubator/felix/trunk/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java

Modified: incubator/felix/trunk/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java
URL: http://svn.apache.org/viewcvs/incubator/felix/trunk/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java?rev=406354&r1=406353&r2=406354&view=diff
==============================================================================
--- incubator/felix/trunk/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java (original)
+++ incubator/felix/trunk/org.apache.felix.eventadmin.bridge.upnp/src/main/java/org/apache/felix/eventadmin/bridge/upnp/UPnPEventToEventAdminBridge.java Sun May 14 08:15:33 2006
@@ -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);
                 }