comparison src/luan/lib/JavaLib.java @ 112:f5af13062b10

fix previous rev git-svn-id: https://luan-java.googlecode.com/svn/trunk@113 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 23 May 2014 22:52:39 +0000
parents 3c404a296995
children f1bf2890d80f
comparison
equal deleted inserted replaced
111:2428ecfed375 112:f5af13062b10
28 public final class JavaLib { 28 public final class JavaLib {
29 29
30 public static final String NAME = "Java"; 30 public static final String NAME = "Java";
31 31
32 public static final LuanFunction LOADER = new LuanFunction() { 32 public static final LuanFunction LOADER = new LuanFunction() {
33 @Override public Object[] call(LuanState luan,Object[] args) { 33 @Override public Object call(LuanState luan,Object[] args) {
34 luan.addMetatableGetter(mg); 34 luan.addMetatableGetter(mg);
35 LuanTable module = new LuanTable(); 35 LuanTable module = new LuanTable();
36 LuanTable global = luan.global(); 36 LuanTable global = luan.global();
37 try { 37 try {
38 module.put( "class", new LuanJavaFunction(JavaLib.class.getMethod("getClass",LuanState.class,String.class),null) ); 38 module.put( "class", new LuanJavaFunction(JavaLib.class.getMethod("getClass",LuanState.class,String.class),null) );
39 add( module, "proxy", LuanState.class, Static.class, LuanTable.class, Object.class ); 39 add( module, "proxy", LuanState.class, Static.class, LuanTable.class, Object.class );
40 } catch(NoSuchMethodException e) { 40 } catch(NoSuchMethodException e) {
41 throw new RuntimeException(e); 41 throw new RuntimeException(e);
42 } 42 }
43 luan.searchers().add(javaSearcher); 43 luan.searchers().add(javaSearcher);
44 return new Object[]{module}; 44 return module;
45 } 45 }
46 }; 46 };
47 47
48 public static final LuanFunction javaSearcher = new LuanFunction() { 48 public static final LuanFunction javaSearcher = new LuanFunction() {
49 @Override public Object[] call(LuanState luan,Object[] args) throws LuanException { 49 @Override public Object call(LuanState luan,Object[] args) throws LuanException {
50 String modName = (String)args[0]; 50 String modName = (String)args[0];
51 final Static s = JavaLib.getClass(luan,modName); 51 final Static s = JavaLib.getClass(luan,modName);
52 if( s==null ) 52 if( s==null )
53 return LuanFunction.EMPTY; 53 return null;
54 LuanFunction loader = new LuanFunction() { 54 LuanFunction loader = new LuanFunction() {
55 @Override public Object[] call(LuanState luan,Object[] args) { 55 @Override public Object call(LuanState luan,Object[] args) {
56 return new Object[]{s}; 56 return s;
57 } 57 }
58 }; 58 };
59 return new Object[]{loader}; 59 return loader;
60 } 60 }
61 }; 61 };
62 62
63 private static void add(LuanTable t,String method,Class<?>... parameterTypes) { 63 private static void add(LuanTable t,String method,Class<?>... parameterTypes) {
64 try { 64 try {
366 } 366 }
367 list.add(fn); 367 list.add(fn);
368 } 368 }
369 } 369 }
370 370
371 @Override public Object[] call(LuanState luan,Object[] args) throws LuanException { 371 @Override public Object call(LuanState luan,Object[] args) throws LuanException {
372 for( LuanJavaFunction fn : fnMap.get(args.length) ) { 372 for( LuanJavaFunction fn : fnMap.get(args.length) ) {
373 try { 373 try {
374 return fn.rawCall(luan,args); 374 return fn.rawCall(luan,args);
375 } catch(IllegalArgumentException e) {} 375 } catch(IllegalArgumentException e) {}
376 } 376 }