Mercurial Hosting > luan
comparison src/luan/modules/http/jetty/HttpServicer.java @ 1159:3ef883468fd0
remove Http.per_session_pages
fix clone closure bug
replace Thread.global with Thread.global_callable()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 05 Feb 2018 12:37:59 -0700 |
parents | bbad9a21277c |
children |
comparison
equal
deleted
inserted
replaced
1158:267fdf5e9fbd | 1159:3ef883468fd0 |
---|---|
16 import javax.servlet.ServletOutputStream; | 16 import javax.servlet.ServletOutputStream; |
17 import javax.servlet.ServletException; | 17 import javax.servlet.ServletException; |
18 import javax.servlet.http.Cookie; | 18 import javax.servlet.http.Cookie; |
19 import javax.servlet.http.HttpServletRequest; | 19 import javax.servlet.http.HttpServletRequest; |
20 import javax.servlet.http.HttpServletResponse; | 20 import javax.servlet.http.HttpServletResponse; |
21 import javax.servlet.http.HttpSession; | |
22 import javax.servlet.http.Part; | 21 import javax.servlet.http.Part; |
23 import org.slf4j.Logger; | 22 import org.slf4j.Logger; |
24 import org.slf4j.LoggerFactory; | 23 import org.slf4j.LoggerFactory; |
25 import org.eclipse.jetty.util.MultiPartInputStream; | 24 import org.eclipse.jetty.util.MultiPartInputStream; |
26 import luan.Luan; | 25 import luan.Luan; |
44 { | 43 { |
45 LuanFunction fn; | 44 LuanFunction fn; |
46 synchronized(luan) { | 45 synchronized(luan) { |
47 PackageLuan.enableLoad(luan,"luan:http/Http.luan",modName); | 46 PackageLuan.enableLoad(luan,"luan:http/Http.luan",modName); |
48 LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); | 47 LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); |
49 LuanTable per_session_pages = (LuanTable)module.rawGet("per_session_pages"); | |
50 Object mod = PackageLuan.load(luan,modName); | 48 Object mod = PackageLuan.load(luan,modName); |
51 if( mod.equals(Boolean.FALSE) ) | 49 if( mod.equals(Boolean.FALSE) ) |
52 return false; | 50 return false; |
53 if( !(mod instanceof LuanFunction) ) | 51 if( !(mod instanceof LuanFunction) ) |
54 throw new LuanException( "module '"+modName+"' must return a function" ); | 52 throw new LuanException( "module '"+modName+"' must return a function" ); |
55 if( Boolean.TRUE.equals(per_session_pages.rawGet(mod)) ) { | 53 LuanCloner cloner = new LuanCloner(LuanCloner.Type.INCREMENTAL); |
56 HttpSession session = request.getSession(); | 54 luan = (LuanState)cloner.clone(luan); |
57 LuanState sessionLuan = (LuanState)session.getAttribute("luan"); | 55 fn = (LuanFunction)cloner.get(mod); |
58 if( sessionLuan!=null ) { | |
59 luan = sessionLuan; | |
60 } else { | |
61 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); | |
62 luan = (LuanState)cloner.clone(luan); | |
63 session.setAttribute("luan",luan); | |
64 } | |
65 fn = (LuanFunction)PackageLuan.require(luan,modName); | |
66 } else { | |
67 LuanCloner cloner = new LuanCloner(LuanCloner.Type.INCREMENTAL); | |
68 luan = (LuanState)cloner.clone(luan); | |
69 fn = (LuanFunction)cloner.get(mod); | |
70 } | |
71 } | 56 } |
72 | 57 |
73 LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); | 58 LuanTable module = (LuanTable)PackageLuan.require(luan,"luan:http/Http.luan"); |
74 | 59 |
75 // request | 60 // request |