Mercurial Hosting > luan
diff core/src/luan/modules/JavaLuan.java @ 301:a6bf8ff720f8
add java security
git-svn-id: https://luan-java.googlecode.com/svn/trunk@302 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 17 Dec 2014 12:35:57 +0000 |
parents | 9fb523472035 |
children | 03e9cda4748d |
line wrap: on
line diff
--- a/core/src/luan/modules/JavaLuan.java Tue Dec 16 13:13:33 2014 +0000 +++ b/core/src/luan/modules/JavaLuan.java Wed Dec 17 12:35:57 2014 +0000 @@ -27,7 +27,8 @@ public final class JavaLuan { - public static void java(LuanState luan) { + public static void java(LuanState luan) throws LuanException { + check(luan,luan.currentSource().name); luan.currentEnvironment().setJava(); } @@ -311,21 +312,6 @@ public static Static load(LuanState luan,String name) throws LuanException { checkJava(luan); - @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); @@ -433,4 +419,25 @@ } ); } + + + + // security + + public interface Security { + public void check(LuanState luan,String name) throws LuanException; + } + + private static String SECURITY_KEY = "Java.Security"; + + private static void check(LuanState luan,String name) throws LuanException { + Security s = (Security)luan.registry().get(SECURITY_KEY); + if( s!=null ) + s.check(luan,name); + } + + public static void setSecurity(LuanState luan,Security s) { + luan.registry().put(SECURITY_KEY,s); + } + }