diff src/luan/lib/JavaLib.java @ 55:9381b23ea9e1

various fixes git-svn-id: https://luan-java.googlecode.com/svn/trunk@56 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 04 Jan 2013 04:50:18 +0000
parents 28dfd91a816c
children c84274b18f0c
line wrap: on
line diff
--- a/src/luan/lib/JavaLib.java	Mon Dec 31 19:45:06 2012 +0000
+++ b/src/luan/lib/JavaLib.java	Fri Jan 04 04:50:18 2013 +0000
@@ -12,6 +12,7 @@
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.Collections;
 import luan.Luan;
 import luan.LuanState;
 import luan.LuanTable;
@@ -110,7 +111,7 @@
 				}
 			}
 		}
-		throw new LuanException(luan,LuanElement.JAVA,"invalid index for java object: "+key);
+		throw new LuanException(luan,LuanElement.JAVA,"invalid member for java object: "+key);
 	}
 
 	private static Object member(Object obj,List<AccessibleObject> members) throws LuanException {
@@ -166,7 +167,10 @@
 			}
 			memberMap.put(cls,clsMap);
 		}
-		return clsMap.get(name);
+		List<AccessibleObject> rtn = clsMap.get(name);
+		if( rtn==null )
+			rtn = Collections.emptyList();
+		return rtn;
 	}
 
 	private static synchronized List<AccessibleObject> getStaticMembers(Class cls,String name) {
@@ -222,7 +226,7 @@
 		@Override public Object[] call(LuanState luan,Object[] args) throws LuanException {
 			for( LuanJavaFunction fn : fnMap.get(args.length) ) {
 				try {
-					return fn.call(luan,args);
+					return fn.rawCall(luan,args);
 				} catch(IllegalArgumentException e) {}
 			}
 			throw new LuanException(luan,LuanElement.JAVA,"no method matched args");