Mercurial Hosting > luan
annotate web/src/luan/modules/web/HttpLuan.java @ 224:05eb2837ddbf
change LuanTable.put() to not return old value
git-svn-id: https://luan-java.googlecode.com/svn/trunk@225 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Mon, 21 Jul 2014 09:27:06 +0000 |
parents | a9fe265dbac3 |
children | 7c768f63bbb3 |
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() ); |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
93 module.put( "cookie", lib.cookieTable() ); |
218
92f5d74697f8
change Http.session_attribute to Http.session
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
217
diff
changeset
|
94 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
|
95 /* |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
96 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
|
97 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
|
98 ) ); |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
99 */ |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
100 } catch(NoSuchMethodException e) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
101 throw new RuntimeException(e); |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
102 } |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
103 |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
104 luan.call(fn,"<http>"); |
175
bdbd4740121f
finish web server
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
173
diff
changeset
|
105 return true; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
106 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
107 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
108 |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
109 |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
110 private final HttpServletRequest request; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
111 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
|
112 // private PrintWriter writer = null; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
113 // private ServletOutputStream sos = null; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
114 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
115 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
|
116 this.request = request; |
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
117 this.response = response; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
118 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
119 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
120 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
|
121 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
|
122 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
|
123 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
|
124 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
125 @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
|
126 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
|
127 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
128 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
129 @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
|
130 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
|
131 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
132 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
133 @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
|
134 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
|
135 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
136 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
137 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
|
138 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
|
139 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
|
140 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
141 @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
|
142 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
|
143 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
144 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
145 @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
|
146 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
|
147 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
148 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
149 @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
|
150 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
|
151 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
152 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
153 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
|
154 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
|
155 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
|
156 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
157 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
|
158 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
|
159 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
160 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
|
161 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
|
162 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
163 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
|
164 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
|
165 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
|
166 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
167 return tbl; |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
168 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
169 |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
170 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
|
171 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
|
172 tbl.put("java",response); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
173 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
|
174 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
|
175 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
|
176 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
177 @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
|
178 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
|
179 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
180 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
181 @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
|
182 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
|
183 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
184 |
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
|
185 @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
|
186 if( !(key instanceof String) ) |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
187 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
|
188 String name = (String)key; |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
189 if( val instanceof String ) { |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
190 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
|
191 return; |
223
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
192 } |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
193 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
|
194 if( i != null ) { |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
195 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
|
196 return; |
223
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
197 } |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
198 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
|
199 } |
a9fe265dbac3
upgrade to jetty 8
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
222
diff
changeset
|
200 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
201 @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
|
202 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
|
203 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
204 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
205 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
|
206 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
|
207 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
|
208 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
209 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
|
210 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
|
211 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
212 add( tbl, "text_writer" ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
213 return tbl; |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
214 } |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
215 |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
216 private LuanTable cookieTable() throws NoSuchMethodException { |
221
ec016471c6eb
make LuanTable an interface
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
218
diff
changeset
|
217 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
|
218 tbl.put( "get", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
219 HttpLuan.class.getMethod("get_cookie",String.class), this |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
220 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
221 tbl.put( "set", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
222 HttpLuan.class.getMethod("set_cookie", String.class, String.class, Boolean.TYPE, String.class), this |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
223 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
224 tbl.put( "remove", new LuanJavaFunction( |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
225 HttpLuan.class.getMethod("remove_cookie", String.class, String.class), this |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
226 ) ); |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
227 return tbl; |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
228 } |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
229 |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
230 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
|
231 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
|
232 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
|
233 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
234 @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
|
235 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
|
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 @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
|
239 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
|
240 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
241 |
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
|
242 @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
|
243 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
|
244 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
|
245 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
|
246 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
|
247 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
248 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
249 @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
|
250 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
|
251 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
252 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
253 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
|
254 return tbl; |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
255 } |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
256 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
257 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
|
258 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
|
259 } |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
260 /* |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
261 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
|
262 if( writer == null ) |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
263 writer = response.getWriter(); |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
264 for( Object obj : args ) { |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
265 writer.print( luan.toString(obj) ); |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
266 } |
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
267 } |
138
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
268 */ |
06159094b802
replace WebRun.java with web_run.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
136
diff
changeset
|
269 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
|
270 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
|
271 } |
136
7e160d2f6d9c
update HttpLib, untested
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
135
diff
changeset
|
272 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
273 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
|
274 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
|
275 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
|
276 } |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
277 |
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
278 public String get_cookie(String name) { |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
279 return getCookieValue(request, name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
280 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
281 |
217
a608066395c5
clean up HttpLuan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
202
diff
changeset
|
282 public String get_current_url() { |
89
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
283 return getCurrentURL(request); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
284 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
285 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
286 public void send_redirect(String redirectUrl) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
287 throws IOException |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
288 { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
289 response.sendRedirect(redirectUrl); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
290 throw new LuanExitException(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
291 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
292 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
293 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
|
294 throws IOException |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
295 { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
296 response.sendError(code, text); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
297 throw new LuanExitException(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
298 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
299 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
300 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
|
301 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
|
302 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
303 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
304 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
|
305 removeCookie(request,response,name,domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
306 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
307 |
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 // static utils |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
310 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
311 public static String getQueryString(HttpServletRequest request) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
312 return getQueryString(request,0); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
313 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
314 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
315 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
|
316 String method = request.getMethod(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
317 if( method.equals("GET") ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
318 return request.getQueryString(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
319 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
|
320 throw new RuntimeException(method); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
321 Enumeration en = request.getParameterNames(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
322 StringBuilder queryBuf = new StringBuilder(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
323 if( !en.hasMoreElements() ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
324 return null; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
325 do { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
326 String param = (String)en.nextElement(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
327 String value = request.getParameter(param); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
328 if( maxValueLen > 0 ) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
329 int len = value.length(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
330 if( len > maxValueLen ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
331 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
|
332 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
333 queryBuf.append(param); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
334 queryBuf.append('='); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
335 queryBuf.append(value); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
336 queryBuf.append('&'); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
337 } while( en.hasMoreElements() ); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
338 queryBuf.deleteCharAt(queryBuf.length() - 1); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
339 return queryBuf.toString(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
340 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
341 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
342 public static String getCurrentURL(HttpServletRequest request) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
343 return getCurrentURL(request,0); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
344 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
345 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
346 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
|
347 // StringBuffer buf = HttpUtils.getRequestURL(request); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
348 StringBuffer buf = request.getRequestURL(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
349 String qStr = getQueryString(request,maxValueLen); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
350 if(qStr != null && qStr.length() > 0) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
351 buf.append('?'); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
352 buf.append(qStr); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
353 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
354 return buf.toString(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
355 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
356 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
357 private static String escape(String value) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
358 return value.replaceAll(";", "%3B"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
359 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
360 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
361 private static String unescape(String value) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
362 return value.replaceAll("%3B", ";"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
363 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
364 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
365 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
|
366 Cookie[] cookies = request.getCookies(); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
367 if( cookies == null ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
368 return null; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
369 for (Cookie cookie : cookies) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
370 if (cookie.getName().equals(name)) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
371 return cookie; |
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 return null; |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
374 } |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
375 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
376 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
|
377 Cookie cookie = getCookie(request,name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
378 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
|
379 } |
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 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
|
382 Cookie cookie = getCookie(request,name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
383 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
|
384 cookie = new Cookie(name, escape(value)); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
385 cookie.setPath("/"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
386 if (domain != null && domain.length() > 0) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
387 cookie.setDomain(domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
388 if( isPersistent ) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
389 cookie.setMaxAge(10000000); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
390 response.addCookie(cookie); |
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 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
394 public static void removeCookie(HttpServletRequest request, |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
395 HttpServletResponse response, |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
396 String name, |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
397 String domain |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
398 |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
399 ) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
400 Cookie cookie = getCookie(request, name); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
401 if(cookie != null) { |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
402 Cookie delCookie = new Cookie(name, "delete"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
403 delCookie.setPath("/"); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
404 delCookie.setMaxAge(0); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
405 if (domain != null && domain.length() > 0) |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
406 delCookie.setDomain(domain); |
8ef2d6701541
improve HttpLib
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
88
diff
changeset
|
407 response.addCookie(delCookie); |
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 |
222
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
411 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
412 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
413 // util classes |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
414 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
415 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
|
416 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
|
417 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
418 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
|
419 this.en = en; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
420 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
421 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
422 @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
|
423 return en.hasMoreElements(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
424 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
425 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
426 @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
|
427 return en.nextElement(); |
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 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
430 @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
|
431 throw new UnsupportedOperationException(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
432 } |
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 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
435 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
|
436 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
|
437 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
|
438 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
439 @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
|
440 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
|
441 return null; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
442 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
|
443 return get(name); |
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 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
|
447 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
|
448 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
|
449 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
450 @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
|
451 return names.hasNext(); |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
452 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
453 @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
|
454 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
|
455 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
|
456 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
|
457 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
458 @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
|
459 throw new UnsupportedOperationException(); |
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 } |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
463 }; |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
464 |
b76fcb72d97d
add AbstractLuanTable and improve HttpLuan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
465 |
76
97b03fc807ad
add HttpLib and WebServlet
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
466 } |