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);
+	}
+
 }