diff options
-rw-r--r-- | changelog | 6 | ||||
-rw-r--r-- | debug.conf | 2 | ||||
-rw-r--r-- | org/freedesktop/dbus/DBusMap.java | 2 | ||||
-rw-r--r-- | org/freedesktop/dbus/Marshalling.java | 9 |
4 files changed, 15 insertions, 4 deletions
@@ -1,9 +1,11 @@ Version 2.6.1: - * Fix bug in disconnected signal/exception handling (Spotted by Serkan Kaba - <serkan_kaba -at- yahoo -dot- com>) + * Fix bug in disconnected signal/exception handling (Spotted by Serkan Kaba + <serkan_kaba -at- yahoo -dot- com>) * Fix bug in empty signals (Spotted by Daniel Wagner <Daniel -dot- Wagner -at- bmw-carit -dot- de>) + * Fix bug in maps containing complex types (Spotted by Tim Court <tim -dot- + court -at- venture3systems -dot- com> Version 2.6: @@ -16,7 +16,7 @@ org.freedesktop.dbus.EfficientQueue = ERR org.freedesktop.dbus.Transport = ERR org.freedesktop.dbus.Transport$SASL = ERR org.freedesktop.dbus.Transport$SASL$Command = ERR -org.freedesktop.dbus.Marshalling = ERR +org.freedesktop.dbus.Marshalling = VERBOSE org.freedesktop.dbus.ObjectTree = ERR org.freedesktop.dbus.BusAddress = ERR org.freedesktop.dbus.RemoteInvocationHandler = ERR diff --git a/org/freedesktop/dbus/DBusMap.java b/org/freedesktop/dbus/DBusMap.java index 2ac65f1..b9d06d7 100644 --- a/org/freedesktop/dbus/DBusMap.java +++ b/org/freedesktop/dbus/DBusMap.java @@ -20,7 +20,7 @@ import java.util.Vector; class DBusMap<K, V> implements Map<K, V> { - private Object[][] entries; + Object[][] entries; public DBusMap(Object[][] entries) { this.entries=entries; diff --git a/org/freedesktop/dbus/Marshalling.java b/org/freedesktop/dbus/Marshalling.java index 7f6797c..06c9a8c 100644 --- a/org/freedesktop/dbus/Marshalling.java +++ b/org/freedesktop/dbus/Marshalling.java @@ -518,6 +518,15 @@ public class Marshalling o.getClass()); } } + if (parameter instanceof DBusMap) { + if (Debug.debug) Debug.print(Debug.VERBOSE, "Deserializing a Map"); + DBusMap dmap = (DBusMap) parameter; + Type[] maptypes = ((ParameterizedType) type).getActualTypeArguments(); + for (int i = 0; i < dmap.entries.length; i++) { + dmap.entries[i][0] = deSerializeParameter(dmap.entries[i][0], maptypes[0], conn); + dmap.entries[i][1] = deSerializeParameter(dmap.entries[i][1], maptypes[1], conn); + } + } return parameter; } static List<Object> deSerializeParameters(List<Object> parameters, Type type, AbstractConnection conn) throws Exception |