diff core/src/luan/modules/PackageLuan.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 a74559240b4f
children d34be4588556
line wrap: on
line diff
--- a/core/src/luan/modules/PackageLuan.java	Tue Dec 16 13:13:33 2014 +0000
+++ b/core/src/luan/modules/PackageLuan.java	Wed Dec 17 12:35:57 2014 +0000
@@ -41,16 +41,20 @@
 	}
 
 	public static Object load(LuanState luan,String modName) throws LuanException {
-		if( modName.startsWith("java:") )
-			return JavaLuan.load(luan,modName.substring(5));
 		LuanTable loaded = loaded(luan);
 		Object mod = loaded.get(modName);
 		if( mod == null ) {
-			String src = read(luan,modName+".luan");
-			if( src == null )
-				return null;
-			LuanFunction loader = BasicLuan.load(luan,src,modName,null,false);
-			mod = Luan.first(luan.call(loader,"<require \""+modName+"\">",new Object[]{modName}));
+			if( modName.startsWith("java:") ) {
+				mod = JavaLuan.load(luan,modName.substring(5));
+			} else {
+				String src = read(luan,modName+".luan");
+				if( src == null )
+					return null;
+				LuanFunction loader = BasicLuan.load(luan,src,modName,null,false);
+				mod = Luan.first(
+					luan.call(loader,"<require \""+modName+"\">",new Object[]{modName})
+				);
+			}
 			if( mod != null ) {
 				loaded.put(modName,mod);
 			} else {
@@ -68,6 +72,10 @@
 		LuanTable t = IoLuan.Uri(luan,uri);
 		if( t == null )
 			return null;
+		LuanFunction existsFn = (LuanFunction)t.get("exists");
+		boolean exists = (Boolean)Luan.first(luan.call(existsFn));
+		if( !exists )
+			return null;
 		LuanFunction reader = (LuanFunction)t.get("read_text");
 		return (String)Luan.first(luan.call(reader));
 	}