annotate src/luan/modules/http/LuanDomainHandler.java @ 1328:55b8210b4ec0

add MDC host
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 09 Feb 2019 21:49:42 -0700
parents 307e76ccd0d6
children 5a39b006acd1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 package luan.modules.http;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2
1328
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
3 import org.apache.log4j.MDC;
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 import luan.webserver.Request;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 import luan.webserver.Response;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 import luan.webserver.Handler;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 import luan.webserver.handlers.DomainHandler;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 import luan.LuanState;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 import luan.LuanTable;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 import luan.LuanCloner;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 import luan.LuanException;
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
12 import luan.modules.logging.LuanLogger;
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 public final class LuanDomainHandler implements Handler {
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 private final LuanState luanInit;
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19 private final DomainHandler.Factory factory = new DomainHandler.Factory() {
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20 public Handler newHandler(String domain) {
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE);
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 LuanState luan = (LuanState)cloner.clone(luanInit);
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 try {
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
24 LuanLogger.newLoggerRepository(luan);
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 LuanTable Http = (LuanTable)luan.require("luan:http/Http.luan");
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 Http.put( "domain", domain );
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 } catch(LuanException e) {
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 throw new RuntimeException(e);
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 }
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
30 return new LuanHandler(luan);
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 }
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 };
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 private final DomainHandler domainHandler = new DomainHandler(factory);
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 public LuanDomainHandler(LuanState luanInit) {
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE);
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 this.luanInit = (LuanState)cloner.clone(luanInit);
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39 }
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
40
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
41 @Override public Response handle(Request request) {
1328
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
42 String host = (String)request.headers.get("host");
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
43 MDC.put("host",host);
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
44 try {
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
45 return domainHandler.handle(request);
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
46 } finally {
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
47 MDC.remove("host");
55b8210b4ec0 add MDC host
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
48 }
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 }
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 }