diff options
author | Matthew Johnson <mjj29@hecate.(none)> | 2006-09-14 13:28:47 +0100 |
---|---|---|
committer | Matthew Johnson <mjj29@hecate.(none)> | 2006-09-14 13:28:47 +0100 |
commit | 8fe590a5f061a3fd559ce5c440d6fcaaa867b27c (patch) | |
tree | 1cb158aacee7494fcce83de9a91eda654ec9bdf5 | |
parent | ee3dc408b4cdfdbf54462b902a7805a91549b069 (diff) |
add some debug and fix List<List<Integer>> return type
-rw-r--r-- | dbus-java.c | 4 | ||||
-rw-r--r-- | org/freedesktop/dbus/ListContainer.java | 13 | ||||
-rw-r--r-- | org/freedesktop/dbus/test/TestRemoteInterface2.java | 2 | ||||
-rw-r--r-- | org/freedesktop/dbus/test/test.java | 20 |
4 files changed, 36 insertions, 3 deletions
diff --git a/dbus-java.c b/dbus-java.c index 84913bb..914bfeb 100644 --- a/dbus-java.c +++ b/dbus-java.c @@ -677,6 +677,8 @@ JNIEXPORT jobject JNICALL Java_org_freedesktop_dbus_DBusConnection_dbus_1read_1w params = NULL; if ((*env)->ExceptionOccurred(env)) { + if (NULL != getenv("DBUS_JAVA_EXCEPTION_DEBUG")) + (*env)->ExceptionDescribe(env); (*env)->ExceptionClear(env); char* cname = "org.freedesktop.dbus.DBusExecutionException"; jstring name = (*env)->NewStringUTF(env, cname); @@ -784,6 +786,8 @@ JNIEXPORT jobject JNICALL Java_org_freedesktop_dbus_DBusConnection_dbus_1read_1w if ((*env)->ExceptionOccurred(env)) { + if (NULL != getenv("DBUS_JAVA_EXCEPTION_DEBUG")) + (*env)->ExceptionDescribe(env); (*env)->ExceptionClear(env); char* cname = "org.freedesktop.dbus.DBusExecutionException"; jstring name = (*env)->NewStringUTF(env, cname); diff --git a/org/freedesktop/dbus/ListContainer.java b/org/freedesktop/dbus/ListContainer.java index fb601a0..3d951bd 100644 --- a/org/freedesktop/dbus/ListContainer.java +++ b/org/freedesktop/dbus/ListContainer.java @@ -32,9 +32,20 @@ class ListContainer } this.sig = sig; for (int i = 0; i < content.length; i++) { - this.values[i] = content[i]; + if (content[i].getClass().isArray()) { + this.values[i] = new ListContainer(content[i]); + } else + this.values[i] = content[i]; } } + private ListContainer(Object content) throws DBusException + { + this.values = ArrayFrob.wrap(content); + + String[] s = DBusConnection.getDBusType(content.getClass().getComponentType()); + if (1 != s.length) throw new DBusException("List Contents not single type"); + sig = s[0]; + } public ListContainer(Object[] content, Type t) throws DBusException { list = null; diff --git a/org/freedesktop/dbus/test/TestRemoteInterface2.java b/org/freedesktop/dbus/test/TestRemoteInterface2.java index f9e5d94..7243be3 100644 --- a/org/freedesktop/dbus/test/TestRemoteInterface2.java +++ b/org/freedesktop/dbus/test/TestRemoteInterface2.java @@ -30,4 +30,6 @@ public interface TestRemoteInterface2 extends DBusInterface public int overload(byte b); @Description("Parameter-overloaded method (void)") public int overload(); + @Description("Nested List Check") + public List<List<Integer>> checklist(List<List<Integer>> lli); } diff --git a/org/freedesktop/dbus/test/test.java b/org/freedesktop/dbus/test/test.java index 884901a..a81e056 100644 --- a/org/freedesktop/dbus/test/test.java +++ b/org/freedesktop/dbus/test/test.java @@ -200,6 +200,10 @@ class testclass implements TestRemoteInterface, TestRemoteInterface2, TestSignal else return -1; } + public List<List<Integer>> checklist(List<List<Integer>> lli) + { + return lli; + } } /** @@ -401,13 +405,13 @@ public class test /** This gets a remote object matching our bus name and exported object path. */ TestRemoteInterface2 tri2 = (TestRemoteInterface2) conn.getRemoteObject("foo.bar.Test", "/Test", TestRemoteInterface2.class); /** Call the remote object and get a response. */ - TestTuple<String, List<Integer>, Boolean> rv = tri2.show(234); + /* TestTuple<String, List<Integer>, Boolean> rv = tri2.show(234); System.out.println("Show Response = "+rv); if (!":1.0".equals(rv.a) || 1 != rv.b.size() || 1953 != rv.b.get(0) || true != rv.c.booleanValue()) - fail("show return value incorrect"); + fail("show return value incorrect");*/ System.out.println("Doing stuff asynchronously"); @@ -474,6 +478,18 @@ public class test if (4 != tri.overload()) test.fail("wrong overloaded method called"); System.out.println("done"); + System.out.print("Testing nested lists..."); + List<List<Integer>> lli = new Vector<List<Integer>>(); + List<Integer> li = new Vector<Integer>(); + li.add(1); + lli.add(li); + List<List<Integer>> reti = tri2.checklist(lli); + if (reti.size() != 1 || + reti.get(0).size() != 1 || + reti.get(0).get(0) != 1) + test.fail("Failed to check nested lists"); + System.out.println("done"); + /** Pause while we wait for the DBus messages to go back and forth. */ Thread.sleep(1000); |