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 {