diff options
author | Matthew Johnson <mjj29@hecate.trinhall.cam.ac.uk> | 2007-01-11 10:59:34 +0000 |
---|---|---|
committer | Matthew Johnson <mjj29@hecate.trinhall.cam.ac.uk> | 2007-01-11 10:59:34 +0000 |
commit | 154a51bc8f5eec7a0e19b0bdb5bc4d5c329d1432 (patch) | |
tree | a48cddf840766bdcf8318563aefd1d367b1aa197 /org/freedesktop | |
parent | e0de1f29ac286a3887e2953c2885742e1694f029 (diff) |
fix cross-test-client
Diffstat (limited to 'org/freedesktop')
-rw-r--r-- | org/freedesktop/dbus/test/cross_test_client.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/org/freedesktop/dbus/test/cross_test_client.java b/org/freedesktop/dbus/test/cross_test_client.java index d7da1f9..59c5c08 100644 --- a/org/freedesktop/dbus/test/cross_test_client.java +++ b/org/freedesktop/dbus/test/cross_test_client.java @@ -190,10 +190,14 @@ public class cross_test_client implements DBus.Binding.TestCallbacks, DBusSigHan if (t instanceof ParameterizedType) { Class c = (Class) ((ParameterizedType) t).getRawType(); if (List.class.isAssignableFrom(c)) { - Object[] os = ((List) a).toArray(); + Object os; + if (a instanceof List) + os = ((List) a).toArray(); + else + os = a; Type[] ts = ((ParameterizedType) t).getActualTypeArguments(); - for (int i = 0; i < os.length; i++) - vs.addAll(PrimitizeRecurse(os[i], ts[0])); + for (int i = 0; i < Array.getLength(os); i++) + vs.addAll(PrimitizeRecurse(Array.get(os, i), ts[0])); } else if (Map.class.isAssignableFrom(c)) { Object[] os = ((Map) a).keySet().toArray(); Object[] ks = ((Map) a).values().toArray(); @@ -212,7 +216,12 @@ public class cross_test_client implements DBus.Binding.TestCallbacks, DBusSigHan vs.addAll(PrimitizeRecurse(((Variant) a).getValue(), ((Variant) a).getType())); } } else if (Variant.class.isAssignableFrom((Class) t)) - vs.addAll(PrimitizeRecurse(((Variant) a).getValue(), ((Variant) a).getType())); + vs.addAll(PrimitizeRecurse(((Variant) a).getValue(), ((Variant) a).getType())); + else if (t instanceof Class && ((Class) t).isArray()) { + Type t2 = ((Class) t).getComponentType(); + for (int i = 0; i < Array.getLength(a); i++) + vs.addAll(PrimitizeRecurse(Array.get(a, i), t2)); + } else vs.add(new Variant(a)); return vs; |