Mercurial Hosting > luan
annotate web/src/luan/modules/web/HttpLuan.java @ 225:7c768f63bbb3
better cookie API
git-svn-id: https://luan-java.googlecode.com/svn/trunk@226 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 22 Jul 2014 03:06:27 +0000 |
parents | 05eb2837ddbf |
children | 392105b660d7 |
rev | line source |
---|---|
169
9169581dc8fc
add luan.modules.web
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
168
diff
changeset
|
1 package luan.modules.web; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
3 import java.io.PrintWriter; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
4 import java.io.IOException; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
5 import java.util.Map; |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
6 import java.util.AbstractMap; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
7 import java.util.Set; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
8 import java.util.Arrays; |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
9 import java.util.Iterator; |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
10 import java.util.Enumeration; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
11 import javax.servlet.ServletOutputStream; |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
12 import javax.servlet.http.Cookie; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
13 import javax.servlet.http.HttpServletRequest; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
14 import javax.servlet.http.HttpServletResponse; |
139
3b384dc5ca91
replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
138
diff
changeset
|
15 import javax.servlet.http.HttpSession; |
140
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
16 import luan.Luan; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
17 import luan.LuanState; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
18 import luan.LuanFunction; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
19 import luan.LuanElement; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
20 import luan.LuanException; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
21 import luan.LuanTable; |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
22 import luan.AbstractLuanTable; |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
23 import luan.LuanJavaFunction; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
24 import luan.LuanExitException; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
25 import luan.DeepCloner; |
169
9169581dc8fc
add luan.modules.web
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
168
diff
changeset
|
26 import luan.modules.PackageLuan; |
9169581dc8fc
add luan.modules.web
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
168
diff
changeset
|
27 import luan.modules.IoLuan; |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
28 import luan.modules.TableLuan; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
29 |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
30 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
31 public final class HttpLuan { |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
32 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
33 public static final LuanFunction LOADER = new LuanFunction() { |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
34 @Override public Object call(LuanState luan,Object[] args) { |
221
ec016471c6eb
make LuanTable an interface
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
218
diff
changeset
|
35 LuanTable module = Luan.newTable(); |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
36 try { |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
37 addStatic( module, "new_luan_handler", LuanState.class ); |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
38 } catch(NoSuchMethodException e) { |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
39 throw new RuntimeException(e); |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
40 } |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
41 return module; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
42 } |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
43 }; |
86
6db8f286fa6c
_ENV is per module, not global
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
77
diff
changeset
|
44 |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
45 private static void addStatic(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException { |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
46 t.put( method, new LuanJavaFunction(HttpLuan.class.getMethod(method,parameterTypes),null) ); |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
47 } |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
48 |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
49 public static LuanHandler new_luan_handler(LuanState luan) { |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
50 return new LuanHandler(luan); |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
51 } |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
52 |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
53 public static boolean service(LuanState luan,HttpServletRequest request,HttpServletResponse response,String modName) |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
54 throws LuanException |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
55 { |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
56 LuanFunction fn; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
57 synchronized(luan) { |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
58 Object mod = PackageLuan.load(luan,modName); |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
59 if( mod==null ) |
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
60 return false; |
140
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
61 if( !(mod instanceof LuanTable) ) |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
62 throw luan.exception( "module '"+modName+"' must return a table" ); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
63 LuanTable tbl = (LuanTable)mod; |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
64 if( Luan.toBoolean( tbl.get("per_session") ) ) { |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
65 HttpSession session = request.getSession(); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
66 LuanState sessionLuan = (LuanState)session.getValue("luan"); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
67 if( sessionLuan!=null ) { |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
68 luan = sessionLuan; |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
69 } else { |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
70 DeepCloner cloner = new DeepCloner(); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
71 luan = cloner.deepClone(luan); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
72 session.putValue("luan",luan); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
73 } |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
74 tbl = (LuanTable)PackageLuan.require(luan,modName); |
178
2c08e7e27a70
minor - rename web fn from "page" to "service"
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
75 fn = (LuanFunction)tbl.get("service"); |
140
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
76 } else { |
178
2c08e7e27a70
minor - rename web fn from "page" to "service"
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
77 fn = (LuanFunction)tbl.get("service"); |
140
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
78 if( fn == null ) |
178
2c08e7e27a70
minor - rename web fn from "page" to "service"
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
175
diff
changeset
|
79 throw luan.exception( "function 'service' is not defined" ); |
140
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
80 DeepCloner cloner = new DeepCloner(); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
81 luan = cloner.deepClone(luan); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
82 fn = cloner.get(fn); |
f4ce03ff6b2f
add per_session for Http
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
139
diff
changeset
|
83 } |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
84 } |
139
3b384dc5ca91
replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
138
diff
changeset
|
85 |
202
75750ceb45ee
add LuanState.registry
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
178
diff
changeset
|
86 LuanTable module = (LuanTable)PackageLuan.loaded(luan).get("web/Http"); |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
87 if( module == null ) |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
88 throw luan.exception( "module 'web/Http' not defined" ); |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
89 HttpLuan lib = new HttpLuan(request,response); |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
90 try { |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
91 module.put( "request", lib.requestTable() ); |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
92 module.put( "response", lib.responseTable() ); |
218
92f5d74697f8
change Http.session_attribute to Http.session
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
217
diff
changeset
|
93 module.put( "session", lib.sessionTable() ); |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
94 /* |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
95 module.put( "write", new LuanJavaFunction( |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
96 HttpLuan.class.getMethod( "text_write", LuanState.class, new Object[0].getClass() ), lib |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
97 ) ); |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
98 */ |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
99 } catch(NoSuchMethodException e) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
100 throw new RuntimeException(e); |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
101 } |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
102 |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
103 luan.call(fn,"<http>"); |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
104 return true; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
105 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
106 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
107 |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
108 |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
109 private final HttpServletRequest request; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
110 private final HttpServletResponse response; |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
111 // private PrintWriter writer = null; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
112 // private ServletOutputStream sos = null; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
113 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
114 private HttpLuan(HttpServletRequest request,HttpServletResponse response) { |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
115 this.request = request; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
116 this.response = response; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
117 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
118 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
119 private LuanTable requestTable() throws NoSuchMethodException { |
221
ec016471c6eb
make LuanTable an interface
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
218
diff
changeset
|
120 LuanTable tbl = Luan.newTable(); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
121 tbl.put("java",request); |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
122 LuanTable parameters = new NameTable() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
123 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
124 @Override Object get(String name) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
125 return request.getParameter(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
126 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
127 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
128 @Override Iterator<String> names() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
129 return new EnumerationIterator(request.getParameterNames()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
130 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
131 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
132 @Override protected String type() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
133 return "request.parameters-table"; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
134 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
135 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
136 tbl.put( "parameters", parameters ); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
137 add( tbl, "get_parameter_values", String.class ); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
138 LuanTable headers = new NameTable() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
139 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
140 @Override Object get(String name) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
141 return request.getHeader(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
142 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
143 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
144 @Override Iterator<String> names() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
145 return new EnumerationIterator(request.getHeaderNames()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
146 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
147 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
148 @Override protected String type() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
149 return "request.headers-table"; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
150 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
151 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
152 tbl.put( "headers", headers ); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
153 tbl.put( "get_method", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
154 HttpServletRequest.class.getMethod("getMethod"), request |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
155 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
156 tbl.put( "get_servlet_path", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
157 HttpServletRequest.class.getMethod("getServletPath"), request |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
158 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
159 tbl.put( "get_server_name", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
160 HttpServletRequest.class.getMethod("getServerName"), request |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
161 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
162 add( tbl, "get_current_url" ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
163 tbl.put( "get_remote_address", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
164 HttpServletRequest.class.getMethod("getRemoteAddr"), request |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
165 ) ); |
225
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
166 LuanTable cookies = new AbstractLuanTable() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
167 |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
168 @Override public final Object get(Object key) { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
169 if( !(key instanceof String) ) |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
170 return null; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
171 String name = (String)key; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
172 return getCookieValue(request,name); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
173 } |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
174 |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
175 @Override public final Iterator<Map.Entry<Object,Object>> iterator() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
176 return new Iterator<Map.Entry<Object,Object>>() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
177 final Cookie[] cookies = request.getCookies(); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
178 int i = 0; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
179 |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
180 @Override public boolean hasNext() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
181 return i < cookies.length; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
182 } |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
183 @Override public Map.Entry<Object,Object> next() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
184 Cookie cookie = cookies[i++]; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
185 String name = cookie.getName(); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
186 Object val = unescape(cookie.getValue()); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
187 return new AbstractMap.SimpleEntry<Object,Object>(name,val); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
188 } |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
189 @Override public void remove() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
190 throw new UnsupportedOperationException(); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
191 } |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
192 }; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
193 } |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
194 |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
195 @Override protected String type() { |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
196 return "request.cookies-table"; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
197 } |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
198 }; |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
199 tbl.put( "cookies", cookies ); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
200 return tbl; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
201 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
202 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
203 private LuanTable responseTable() throws NoSuchMethodException { |
221
ec016471c6eb
make LuanTable an interface
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
218
diff
changeset
|
204 LuanTable tbl = Luan.newTable(); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
205 tbl.put("java",response); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
206 add( tbl, "send_redirect", String.class ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
207 add( tbl, "send_error", Integer.TYPE, String.class ); |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
208 LuanTable headers = new NameTable() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
209 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
210 @Override Object get(String name) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
211 return response.getHeader(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
212 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
213 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
214 @Override Iterator<String> names() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
215 return response.getHeaderNames().iterator(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
216 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
217 |
224
05eb2837ddbf
change LuanTable.put() to not return old value
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
223
diff
changeset
|
218 @Override public void put(Object key,Object val) { |
223
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
219 if( !(key instanceof String) ) |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
220 throw new IllegalArgumentException("key must be string for headers table"); |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
221 String name = (String)key; |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
222 if( val instanceof String ) { |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
223 response.setHeader(name,(String)val); |
224
05eb2837ddbf
change LuanTable.put() to not return old value
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
223
diff
changeset
|
224 return; |
223
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
225 } |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
226 Integer i = Luan.asInteger(val); |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
227 if( i != null ) { |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
228 response.setIntHeader(name,i); |
224
05eb2837ddbf
change LuanTable.put() to not return old value
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
223
diff
changeset
|
229 return; |
223
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
230 } |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
231 throw new IllegalArgumentException("value must be string or integer for headers table"); |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
232 } |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
233 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
234 @Override protected String type() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
235 return "response.headers-table"; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
236 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
237 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
238 tbl.put( "headers", headers ); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
239 tbl.put( "set_content_type", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
240 HttpServletResponse.class.getMethod("setContentType",String.class), response |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
241 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
242 tbl.put( "set_character_encoding", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
243 HttpServletResponse.class.getMethod("setCharacterEncoding",String.class), response |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
244 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
245 add( tbl, "text_writer" ); |
225
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
246 add( tbl, "set_cookie", String.class, String.class, Boolean.TYPE, String.class ); |
7c768f63bbb3
better cookie API
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
224
diff
changeset
|
247 add( tbl, "remove_cookie", String.class, String.class ); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
248 return tbl; |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
249 } |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
250 |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
251 private LuanTable sessionTable() throws NoSuchMethodException { |
221
ec016471c6eb
make LuanTable an interface
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
218
diff
changeset
|
252 LuanTable tbl = Luan.newTable(); |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
253 LuanTable attributes = new NameTable() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
254 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
255 @Override Object get(String name) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
256 return request.getSession().getAttribute(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
257 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
258 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
259 @Override Iterator<String> names() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
260 return new EnumerationIterator(request.getSession().getAttributeNames()); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
261 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
262 |
224
05eb2837ddbf
change LuanTable.put() to not return old value
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
223
diff
changeset
|
263 @Override public void put(Object key,Object val) { |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
264 if( !(key instanceof String) ) |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
265 throw new IllegalArgumentException("key must be string for session attributes table"); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
266 String name = (String)key; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
267 request.getSession().setAttribute(name,val); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
268 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
269 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
270 @Override protected String type() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
271 return "session.attributes-table"; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
272 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
273 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
274 tbl.put( "attributes", attributes ); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
275 return tbl; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
276 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
277 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
278 private void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException { |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
279 t.put( method, new LuanJavaFunction(HttpLuan.class.getMethod(method,parameterTypes),this) ); |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
280 } |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
281 /* |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
282 public void text_write(LuanState luan,Object... args) throws LuanException, IOException { |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
283 if( writer == null ) |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
284 writer = response.getWriter(); |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
285 for( Object obj : args ) { |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
286 writer.print( luan.toString(obj) ); |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
287 } |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
288 } |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
289 */ |
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
290 public LuanTable text_writer() throws IOException { |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
291 return IoLuan.textWriter(response.getWriter()); |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
292 } |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
293 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
294 public LuanTable get_parameter_values(String name) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
295 Object[] a = request.getParameterValues(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
296 return a==null ? null : TableLuan.pack(a); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
297 } |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
298 |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
299 public String get_current_url() { |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
300 return getCurrentURL(request); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
301 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
302 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
303 public void send_redirect(String redirectUrl) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
304 throws IOException |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
305 { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
306 response.sendRedirect(redirectUrl); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
307 throw new LuanExitException(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
308 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
309 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
310 public void send_error(int code,String text) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
311 throws IOException |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
312 { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
313 response.sendError(code, text); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
314 throw new LuanExitException(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
315 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
316 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
317 public void set_cookie(String name,String value,boolean isPersistent, String domain) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
318 setCookie(request,response,name,value,isPersistent,domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
319 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
320 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
321 public void remove_cookie(String name, String domain) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
322 removeCookie(request,response,name,domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
323 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
324 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
325 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
326 // static utils |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
327 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
328 public static String getQueryString(HttpServletRequest request) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
329 return getQueryString(request,0); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
330 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
331 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
332 public static String getQueryString(HttpServletRequest request,int maxValueLen) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
333 String method = request.getMethod(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
334 if( method.equals("GET") ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
335 return request.getQueryString(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
336 if( !method.equals("POST") && !method.equals("HEAD") ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
337 throw new RuntimeException(method); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
338 Enumeration en = request.getParameterNames(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
339 StringBuilder queryBuf = new StringBuilder(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
340 if( !en.hasMoreElements() ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
341 return null; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
342 do { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
343 String param = (String)en.nextElement(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
344 String value = request.getParameter(param); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
345 if( maxValueLen > 0 ) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
346 int len = value.length(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
347 if( len > maxValueLen ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
348 value = value.substring(0,maxValueLen) + "..." + (len-maxValueLen); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
349 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
350 queryBuf.append(param); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
351 queryBuf.append('='); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
352 queryBuf.append(value); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
353 queryBuf.append('&'); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
354 } while( en.hasMoreElements() ); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
355 queryBuf.deleteCharAt(queryBuf.length() - 1); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
356 return queryBuf.toString(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
357 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
358 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
359 public static String getCurrentURL(HttpServletRequest request) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
360 return getCurrentURL(request,0); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
361 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
362 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
363 public static String getCurrentURL(HttpServletRequest request,int maxValueLen) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
364 // StringBuffer buf = HttpUtils.getRequestURL(request); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
365 StringBuffer buf = request.getRequestURL(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
366 String qStr = getQueryString(request,maxValueLen); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
367 if(qStr != null && qStr.length() > 0) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
368 buf.append('?'); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
369 buf.append(qStr); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
370 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
371 return buf.toString(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
372 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
373 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
374 private static String escape(String value) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
375 return value.replaceAll(";", "%3B"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
376 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
377 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
378 private static String unescape(String value) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
379 return value.replaceAll("%3B", ";"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
380 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
381 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
382 private static Cookie getCookie(HttpServletRequest request,String name) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
383 Cookie[] cookies = request.getCookies(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
384 if( cookies == null ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
385 return null; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
386 for (Cookie cookie : cookies) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
387 if (cookie.getName().equals(name)) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
388 return cookie; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
389 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
390 return null; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
391 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
392 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
393 public static String getCookieValue(HttpServletRequest request,String name) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
394 Cookie cookie = getCookie(request,name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
395 return cookie==null ? null : unescape(cookie.getValue()); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
396 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
397 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
398 public static void setCookie(HttpServletRequest request,HttpServletResponse response,String name,String value,boolean isPersistent, String domain) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
399 Cookie cookie = getCookie(request,name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
400 if( cookie==null || !cookie.getValue().equals(value) ) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
401 cookie = new Cookie(name, escape(value)); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
402 cookie.setPath("/"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
403 if (domain != null && domain.length() > 0) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
404 cookie.setDomain(domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
405 if( isPersistent ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
406 cookie.setMaxAge(10000000); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
407 response.addCookie(cookie); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
408 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
409 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
410 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
411 public static void removeCookie(HttpServletRequest request, |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
412 HttpServletResponse response, |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
413 String name, |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
414 String domain |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
415 ) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
416 Cookie cookie = getCookie(request, name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
417 if(cookie != null) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
418 Cookie delCookie = new Cookie(name, "delete"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
419 delCookie.setPath("/"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
420 delCookie.setMaxAge(0); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
421 if (domain != null && domain.length() > 0) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
422 delCookie.setDomain(domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
423 response.addCookie(delCookie); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
424 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
425 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
426 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
427 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
428 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
429 // util classes |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
430 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
431 static final class EnumerationIterator<E> implements Iterator<E> { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
432 private final Enumeration<E> en; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
433 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
434 EnumerationIterator(Enumeration<E> en) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
435 this.en = en; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
436 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
437 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
438 @Override public boolean hasNext() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
439 return en.hasMoreElements(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
440 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
441 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
442 @Override public E next() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
443 return en.nextElement(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
444 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
445 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
446 @Override public void remove() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
447 throw new UnsupportedOperationException(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
448 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
449 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
450 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
451 private static abstract class NameTable extends AbstractLuanTable { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
452 abstract Object get(String name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
453 abstract Iterator<String> names(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
454 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
455 @Override public final Object get(Object key) { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
456 if( !(key instanceof String) ) |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
457 return null; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
458 String name = (String)key; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
459 return get(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
460 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
461 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
462 @Override public final Iterator<Map.Entry<Object,Object>> iterator() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
463 return new Iterator<Map.Entry<Object,Object>>() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
464 Iterator<String> names = names(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
465 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
466 @Override public boolean hasNext() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
467 return names.hasNext(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
468 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
469 @Override public Map.Entry<Object,Object> next() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
470 String name = names.next(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
471 Object val = get(name); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
472 return new AbstractMap.SimpleEntry<Object,Object>(name,val); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
473 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
474 @Override public void remove() { |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
475 throw new UnsupportedOperationException(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
476 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
477 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
478 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
479 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
480 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
481 |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
482 } |