summaryrefslogtreecommitdiff
path: root/ext/rpc/java/reflect.java
diff options
context:
space:
mode:
authorSam Ruby <rubys@php.net>2000-07-22 17:32:32 +0000
committerSam Ruby <rubys@php.net>2000-07-22 17:32:32 +0000
commit3f4c7c8359918f873c4574819a86ac6120aa4474 (patch)
treed6e3eb78315329effc816f3bf2abbc1aa8b2f643 /ext/rpc/java/reflect.java
parent7893c729652de3435334124593a4a46acf5e811b (diff)
downloadphp-git-3f4c7c8359918f873c4574819a86ac6120aa4474.tar.gz
Allow java.lang.Hashtables to be passed into PHP as arrays.
Diffstat (limited to 'ext/rpc/java/reflect.java')
-rw-r--r--ext/rpc/java/reflect.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/rpc/java/reflect.java b/ext/rpc/java/reflect.java
index 4f1142c506..d5e9393dc2 100644
--- a/ext/rpc/java/reflect.java
+++ b/ext/rpc/java/reflect.java
@@ -45,6 +45,7 @@ public class reflect {
private static native void setResultFromObject(long result, Object value);
private static native void setResultFromArray(long result);
private static native long nextElement(long array);
+ private static native long hashUpdate(long array, byte key[]);
private static native void setException(long result, byte value[]);
public static native void setEnv();
@@ -81,6 +82,15 @@ public class reflect {
setResult(nextElement(result), Array.get(value, i));
}
+ } else if (value instanceof java.util.Hashtable) {
+
+ Hashtable ht = (Hashtable) value;
+ setResultFromArray(result);
+ for (Enumeration e = ht.keys(); e.hasMoreElements(); ) {
+ Object key = e.nextElement();
+ setResult(hashUpdate(result, key.toString().getBytes()), ht.get(key));
+ }
+
} else {
setResultFromObject(result, value);