Mercurial Hosting > luan
changeset 517:8dcf9e12446b
add Luan.on_luan_close()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 27 May 2015 01:20:49 -0600 |
parents | 5752df8a67b5 |
children | a8445ce8879e |
files | core/src/luan/LuanException.java core/src/luan/LuanState.java core/src/luan/cmd_line.luan core/src/luan/modules/BasicLuan.java core/src/luan/modules/Luan.luan core/src/luan/modules/PickleServer.java http/src/luan/modules/http/LuanHandler.java http/src/luan/modules/http/NotFound.java lucene/src/luan/modules/lucene/Lucene.luan |
diffstat | 9 files changed, 36 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
diff -r 5752df8a67b5 -r 8dcf9e12446b core/src/luan/LuanException.java --- a/core/src/luan/LuanException.java Tue May 26 20:59:05 2015 -0600 +++ b/core/src/luan/LuanException.java Wed May 27 01:20:49 2015 -0600 @@ -13,6 +13,7 @@ LuanException(LuanBit bit,Object msg) throws LuanException { this( bit.luan.toString(msg), msg instanceof Throwable ? (Throwable)msg : null ); + table.rawPut("java",this); table.rawPut("message",msg); for( StackTraceElement ste : bit.stackTrace() ) { LuanTable tbl = new LuanTable();
diff -r 5752df8a67b5 -r 8dcf9e12446b core/src/luan/LuanState.java --- a/core/src/luan/LuanState.java Tue May 26 20:59:05 2015 -0600 +++ b/core/src/luan/LuanState.java Wed May 27 01:20:49 2015 -0600 @@ -13,6 +13,7 @@ final List<StackTraceElement> stackTrace = new ArrayList<StackTraceElement>(); private Map registry; + private final List<LuanFunction> onClose = new ArrayList<LuanFunction>(); protected LuanState() { registry = new HashMap(); @@ -32,6 +33,17 @@ return registry; } + public void onClose(LuanFunction fn) { + onClose.add(fn); + } + + public void close() throws LuanException { + for( LuanFunction fn : onClose ) { + call(fn); + } + onClose.clear(); + } + public static LuanState newInstance() { return LuanCompiler.newLuanState(); }
diff -r 5752df8a67b5 -r 8dcf9e12446b core/src/luan/cmd_line.luan --- a/core/src/luan/cmd_line.luan Tue May 26 20:59:05 2015 -0600 +++ b/core/src/luan/cmd_line.luan Wed May 27 01:20:49 2015 -0600 @@ -24,7 +24,7 @@ Debug.print_if_something( main_file( Table.unpack(Luan.arg) ) ) end; catch = function(e) --- java(); e.printStackTrace(); return +-- java(); e.java.printStackTrace(); return Io.print_to(Io.stderr, e ) end; }
diff -r 5752df8a67b5 -r 8dcf9e12446b core/src/luan/modules/BasicLuan.java --- a/core/src/luan/modules/BasicLuan.java Tue May 26 20:59:05 2015 -0600 +++ b/core/src/luan/modules/BasicLuan.java Wed May 27 01:20:49 2015 -0600 @@ -225,4 +225,8 @@ } } + public static void on_luan_close(LuanState luan,LuanFunction fn) { + luan.onClose(fn); + } + }
diff -r 5752df8a67b5 -r 8dcf9e12446b core/src/luan/modules/Luan.luan --- a/core/src/luan/modules/Luan.luan Tue May 26 20:59:05 2015 -0600 +++ b/core/src/luan/modules/Luan.luan Wed May 27 01:20:49 2015 -0600 @@ -15,6 +15,7 @@ M.load = BasicLuan.load M.load_file = BasicLuan.load_file M.new_error = BasicLuan.new_error +M.on_luan_close = BasicLuan.on_luan_close M.pairs = BasicLuan.pairs M.pcall = BasicLuan.pcall M.range = BasicLuan.range
diff -r 5752df8a67b5 -r 8dcf9e12446b core/src/luan/modules/PickleServer.java --- a/core/src/luan/modules/PickleServer.java Tue May 26 20:59:05 2015 -0600 +++ b/core/src/luan/modules/PickleServer.java Wed May 27 01:20:49 2015 -0600 @@ -46,19 +46,10 @@ //e.printStackTrace(); StringBuilder sb = new StringBuilder(); sb.append( "return false, " ); - sb.append( con.pickle(e.getMessage()) ); + sb.append( con.pickle(e.getFullMessage(con.luan)) ); sb.append( ", " ); sb.append( con.pickle(con.src) ); sb.append( '\n' ); -/* - Throwable cause = e.getCause(); - if( cause != null ) { - sb.append( "\nCaused by: " ); - StringWriter sw = new StringWriter(); - cause.printStackTrace(new PrintWriter(sw)); - sb.append( sw ); - } -*/ con.write( sb.toString() ); } } catch(LuanException e2) {
diff -r 5752df8a67b5 -r 8dcf9e12446b http/src/luan/modules/http/LuanHandler.java --- a/http/src/luan/modules/http/LuanHandler.java Tue May 26 20:59:05 2015 -0600 +++ b/http/src/luan/modules/http/LuanHandler.java Wed May 27 01:20:49 2015 -0600 @@ -22,7 +22,7 @@ this.luan = luan; } - public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) + @Override public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) throws IOException { if( target.endsWith("/") ) @@ -41,4 +41,16 @@ public void setWelcomeFile(String welcomeFile) { this.welcomeFile = welcomeFile; } + + @Override protected void doStop() throws Exception { + luan.close(); +//System.out.println("qqqqqqqqqqqqqqqqqqqq doStop "+this); + super.doStop(); + } +/* + @Override public void destroy() { +System.out.println("qqqqqqqqqqqqqqqqqqqq destroy "+this); + super.destroy(); + } +*/ }
diff -r 5752df8a67b5 -r 8dcf9e12446b http/src/luan/modules/http/NotFound.java --- a/http/src/luan/modules/http/NotFound.java Tue May 26 20:59:05 2015 -0600 +++ b/http/src/luan/modules/http/NotFound.java Wed May 27 01:20:49 2015 -0600 @@ -13,7 +13,7 @@ super(luan); } - public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) + @Override public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) throws IOException { super.handle("/not_found",baseRequest,request,response);
diff -r 5752df8a67b5 -r 8dcf9e12446b lucene/src/luan/modules/lucene/Lucene.luan --- a/lucene/src/luan/modules/lucene/Lucene.luan Tue May 26 20:59:05 2015 -0600 +++ b/lucene/src/luan/modules/lucene/Lucene.luan Wed May 27 01:20:49 2015 -0600 @@ -28,6 +28,8 @@ index.map_field_name = java_index.map_field_name index.close = java_index.close + Luan.on_luan_close(index.close) + function index.save_document(doc) index.Writer( function(writer) writer.save_document(doc)