comparison core/src/luan/modules/JavaLuan.java @ 297:899253043270

remove PackageLuan.load_lib() git-svn-id: https://luan-java.googlecode.com/svn/trunk@298 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 16 Dec 2014 03:26:43 +0000
parents 8ac3eaf8ecd9
children a74559240b4f
comparison
equal deleted inserted replaced
296:7ea6dfdf81ba 297:899253043270
25 import luan.LuanElement; 25 import luan.LuanElement;
26 26
27 27
28 public final class JavaLuan { 28 public final class JavaLuan {
29 29
30 public static final LuanFunction LOADER = new LuanFunction() {
31 @Override public Object call(LuanState luan,Object[] args) throws LuanException {
32 LuanTable module = Luan.newTable();
33 try {
34 module.put( "class", new LuanJavaFunction(JavaLuan.class.getMethod("getClass",LuanState.class,String.class),null) );
35 add( module, "proxy", LuanState.class, Static.class, LuanTable.class, Object.class );
36 } catch(NoSuchMethodException e) {
37 throw new RuntimeException(e);
38 }
39 return module;
40 }
41 };
42
43 private static boolean isLoaded(LuanState luan) { 30 private static boolean isLoaded(LuanState luan) {
44 return PackageLuan.loaded(luan).get("luan:Java") != null; 31 // return PackageLuan.loaded(luan).get("luan:Java") != null;
32 return true;
45 } 33 }
46 34
47 static LuanFunction javaLoader(LuanState luan,String modName) throws LuanException { 35 static LuanFunction javaLoader(LuanState luan,String modName) throws LuanException {
48 if( !isLoaded(luan) ) 36 if( !isLoaded(luan) )
49 return null; 37 return null;
54 @Override public Object call(LuanState luan,Object[] args) { 42 @Override public Object call(LuanState luan,Object[] args) {
55 return s; 43 return s;
56 } 44 }
57 }; 45 };
58 return loader; 46 return loader;
59 }
60
61 private static void add(LuanTable t,String method,Class<?>... parameterTypes) {
62 try {
63 t.put( method, new LuanJavaFunction(JavaLuan.class.getMethod(method,parameterTypes),null) );
64 } catch(NoSuchMethodException e) {
65 throw new RuntimeException(e);
66 }
67 } 47 }
68 48
69 public static Object __index(LuanState luan,Object obj,Object key) throws LuanException { 49 public static Object __index(LuanState luan,Object obj,Object key) throws LuanException {
70 if( obj instanceof Static ) { 50 if( obj instanceof Static ) {
71 if( key instanceof String ) { 51 if( key instanceof String ) {
121 return member(obj,members); 101 return member(obj,members);
122 } 102 }
123 } 103 }
124 } 104 }
125 // throw luan.exception("invalid member '"+key+"' for java object: "+obj); 105 // throw luan.exception("invalid member '"+key+"' for java object: "+obj);
106 //System.out.println("invalid member '"+key+"' for java object: "+obj);
126 return null; 107 return null;
127 } 108 }
128 109
129 private static Object member(Object obj,List<Member> members) throws LuanException { 110 private static Object member(Object obj,List<Member> members) throws LuanException {
130 try { 111 try {
136 Field field = (Field)member; 117 Field field = (Field)member;
137 Object rtn = field.get(obj); 118 Object rtn = field.get(obj);
138 return rtn instanceof Object[] ? Arrays.asList((Object[])rtn) : rtn; 119 return rtn instanceof Object[] ? Arrays.asList((Object[])rtn) : rtn;
139 } else { 120 } else {
140 Method method = (Method)member; 121 Method method = (Method)member;
141 return new LuanJavaFunction(method,obj,true); 122 return new LuanJavaFunction(method,obj);
142 } 123 }
143 } else { 124 } else {
144 List<LuanJavaFunction> fns = new ArrayList<LuanJavaFunction>(); 125 List<LuanJavaFunction> fns = new ArrayList<LuanJavaFunction>();
145 for( Member member : members ) { 126 for( Member member : members ) {
146 Method method = (Method)member; 127 Method method = (Method)member;
147 fns.add(new LuanJavaFunction(method,obj,true)); 128 fns.add(new LuanJavaFunction(method,obj));
148 } 129 }
149 return new AmbiguousJavaFunction(fns); 130 return new AmbiguousJavaFunction(fns);
150 } 131 }
151 } catch(IllegalAccessException e) { 132 } catch(IllegalAccessException e) {
152 throw new RuntimeException(e); 133 throw new RuntimeException(e);