diff src/luan/modules/Utils.java @ 775:1a68fc55a80c

simplify dir structure
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 26 Aug 2016 14:36:40 -0600
parents core/src/luan/modules/Utils.java@e44e98fe9de8
children 836e00bf7ce2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/modules/Utils.java	Fri Aug 26 14:36:40 2016 -0600
@@ -0,0 +1,200 @@
+package luan.modules;
+
+import java.io.Reader;
+import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.MalformedURLException;
+import luan.LuanException;
+import luan.LuanTable;
+import luan.LuanFunction;
+
+
+public final class Utils {
+	private Utils() {}  // never
+
+	static final int bufSize = 8192;
+
+	private static void checkNotNull(Object v,String expected,int pos) throws LuanException {
+		if( v == null )
+			throw new LuanException("bad argument #"+pos+" ("+expected+" expected, got nil)");
+	}
+
+	public static void checkNotNull(String s,int pos) throws LuanException {
+		checkNotNull(s,"string",pos);
+	}
+
+	public static void checkNotNull(String s) throws LuanException {
+		checkNotNull(s,1);
+	}
+
+	public static void checkNotNull(byte[] b,int pos) throws LuanException {
+		checkNotNull(b,"binary",pos);
+	}
+
+	public static void checkNotNull(byte[] b) throws LuanException {
+		checkNotNull(b,1);
+	}
+
+	public static void checkNotNull(LuanTable t,int pos) throws LuanException {
+		checkNotNull(t,"table",pos);
+	}
+
+	public static void checkNotNull(LuanTable t) throws LuanException {
+		checkNotNull(t,1);
+	}
+
+	public static void checkNotNull(Number n,int pos) throws LuanException {
+		checkNotNull(n,"number",pos);
+	}
+
+	public static void checkNotNull(Number n) throws LuanException {
+		checkNotNull(n,1);
+	}
+
+	public static void checkNotNull(LuanFunction fn,int pos) throws LuanException {
+		checkNotNull(fn,"function",pos);
+	}
+
+	public static void checkNotNull(LuanFunction fn) throws LuanException {
+		checkNotNull(fn,1);
+	}
+
+	public static String readAll(Reader in)
+		throws IOException
+	{
+		char[] a = new char[bufSize];
+		StringBuilder buf = new StringBuilder();
+		int n;
+		while( (n=in.read(a)) != -1 ) {
+			buf.append(a,0,n);
+		}
+		return buf.toString();
+	}
+
+	public static void copyAll(InputStream in,OutputStream out)
+		throws IOException
+	{
+		byte[] a = new byte[bufSize];
+		int n;
+		while( (n=in.read(a)) != -1 ) {
+			out.write(a,0,n);
+		}
+	}
+
+	public static byte[] readAll(InputStream in)
+		throws IOException
+	{
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		copyAll(in,out);
+		return out.toByteArray();
+	}
+/*
+	public static boolean exists(File file) {
+		try {
+			return file.exists() && file.getName().equals(file.getCanonicalFile().getName());
+		} catch(IOException e) {
+			throw new RuntimeException(e);
+		}
+	}
+*/
+/*
+	private static File toFile(String path) {
+		if( path.contains("//") )
+			return null;
+		File file = new File(path);
+		return file.exists() ? file : null;
+	}
+
+	private static URL toUrl(String path) {
+		if( path.indexOf(':') == -1 )
+			return null;
+		if( path.startsWith("classpath:") ) {
+			path = path.substring(10);
+			if( path.contains("//") )
+				return null;
+			URL url;
+			if( !path.contains("#") ) {
+				url = ClassLoader.getSystemResource(path);
+			} else {
+				String[] a = path.split("#");
+				url = ClassLoader.getSystemResource(a[0]);
+				if( url==null ) {
+					for( int i=1; i<a.length; i++ ) {
+						url = ClassLoader.getSystemResource(a[0]+"/"+a[i]);
+						if( url != null ) {
+							try {
+								url = new URL(url,".");
+							} catch(MalformedURLException e) {
+								throw new RuntimeException(e);
+							}
+							break;
+						}
+					}
+				}
+			}
+			return url==null ? null : url;
+		}
+		try {
+			return new URL(path);
+		} catch(MalformedURLException e) {}
+		return null;
+	}
+
+	static boolean exists(String path) {
+		return toFile(path)!=null || toUrl(path)!=null;
+	}
+*/
+
+
+
+/*	replace by uri"os:..."
+
+	// process
+
+	public static class ProcessException extends IOException {
+		private ProcessException(String msg) {
+			super(msg);
+		}
+	}
+
+	public static void checkProcess(Process proc)
+		throws IOException
+	{
+		try {
+			proc.waitFor();
+		} catch(InterruptedException e) {
+			throw new RuntimeException(e);
+		}
+		int exitVal = proc.exitValue();
+		if( exitVal != 0 ) {
+			Reader err = new InputStreamReader(proc.getErrorStream());
+			String error = readAll(err);
+			err.close();
+			throw new ProcessException(error);
+		}
+	}
+
+	public static String getOutput(Process proc)
+		throws IOException
+	{
+		Reader in = new InputStreamReader(proc.getInputStream());
+		String s = readAll(in);
+		in.close();
+		return s;
+	}
+
+	public static String execProcess(String... cmd)
+		throws IOException
+	{
+		Process proc = Runtime.getRuntime().exec(cmd);
+		String s = getOutput(proc);
+		checkProcess(proc);
+		return s;
+	}
+*/
+}