Mercurial Hosting > luan
diff 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 |
line wrap: on
line diff
--- a/core/src/luan/modules/JavaLuan.java Tue Dec 16 03:51:56 2014 +0000 +++ b/core/src/luan/modules/JavaLuan.java Tue Dec 16 06:24:49 2014 +0000 @@ -32,20 +32,6 @@ return true; } - static LuanFunction javaLoader(LuanState luan,String modName) throws LuanException { - if( !isLoaded(luan) ) - return null; - final Static s = JavaLuan.getClass(luan,modName); - if( s==null ) - return null; - LuanFunction loader = new LuanFunction() { - @Override public Object call(LuanState luan,Object[] args) { - return s; - } - }; - return loader; - } - public static Object __index(LuanState luan,Object obj,Object key) throws LuanException { if( obj instanceof Static ) { if( key instanceof String ) { @@ -304,7 +290,22 @@ } } - public static Static getClass(LuanState luan,String name) throws LuanException { + public static Static load(LuanState luan,String name) throws LuanException { + @SuppressWarnings("unchecked") + Map<String,Static> loaded = (Map<String,Static>)luan.registry().get("Java.loaded"); + if( loaded == null ) { + loaded = new HashMap<String,Static>(); + luan.registry().put("Java.loaded",loaded); + } + Static s = loaded.get(name); + if( s == null ) { + s = getClassStatic(luan,name); + loaded.put(name,s); + } + return s; + } + + private static Static getClassStatic(LuanState luan,String name) throws LuanException { Class cls; try { cls = Class.forName(name);