Mercurial Hosting > luan
comparison core/src/luan/modules/JavaLuan.java @ 299:a74559240b4f
simplify PackageLuan and remove IO loading param
git-svn-id: https://luan-java.googlecode.com/svn/trunk@300 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 16 Dec 2014 06:24:49 +0000 |
parents | 899253043270 |
children | 9fb523472035 |
comparison
equal
deleted
inserted
replaced
298:2ce23c7e2342 | 299:a74559240b4f |
---|---|
28 public final class JavaLuan { | 28 public final class JavaLuan { |
29 | 29 |
30 private static boolean isLoaded(LuanState luan) { | 30 private static boolean isLoaded(LuanState luan) { |
31 // return PackageLuan.loaded(luan).get("luan:Java") != null; | 31 // return PackageLuan.loaded(luan).get("luan:Java") != null; |
32 return true; | 32 return true; |
33 } | |
34 | |
35 static LuanFunction javaLoader(LuanState luan,String modName) throws LuanException { | |
36 if( !isLoaded(luan) ) | |
37 return null; | |
38 final Static s = JavaLuan.getClass(luan,modName); | |
39 if( s==null ) | |
40 return null; | |
41 LuanFunction loader = new LuanFunction() { | |
42 @Override public Object call(LuanState luan,Object[] args) { | |
43 return s; | |
44 } | |
45 }; | |
46 return loader; | |
47 } | 33 } |
48 | 34 |
49 public static Object __index(LuanState luan,Object obj,Object key) throws LuanException { | 35 public static Object __index(LuanState luan,Object obj,Object key) throws LuanException { |
50 if( obj instanceof Static ) { | 36 if( obj instanceof Static ) { |
51 if( key instanceof String ) { | 37 if( key instanceof String ) { |
302 @Override public boolean isSynthetic() { | 288 @Override public boolean isSynthetic() { |
303 return cls.isSynthetic(); | 289 return cls.isSynthetic(); |
304 } | 290 } |
305 } | 291 } |
306 | 292 |
307 public static Static getClass(LuanState luan,String name) throws LuanException { | 293 public static Static load(LuanState luan,String name) throws LuanException { |
294 @SuppressWarnings("unchecked") | |
295 Map<String,Static> loaded = (Map<String,Static>)luan.registry().get("Java.loaded"); | |
296 if( loaded == null ) { | |
297 loaded = new HashMap<String,Static>(); | |
298 luan.registry().put("Java.loaded",loaded); | |
299 } | |
300 Static s = loaded.get(name); | |
301 if( s == null ) { | |
302 s = getClassStatic(luan,name); | |
303 loaded.put(name,s); | |
304 } | |
305 return s; | |
306 } | |
307 | |
308 private static Static getClassStatic(LuanState luan,String name) throws LuanException { | |
308 Class cls; | 309 Class cls; |
309 try { | 310 try { |
310 cls = Class.forName(name); | 311 cls = Class.forName(name); |
311 } catch(ClassNotFoundException e) { | 312 } catch(ClassNotFoundException e) { |
312 try { | 313 try { |