Mercurial Hosting > luan
annotate src/luan/modules/http/LuanDomainHandler.java @ 1329:5a39b006acd1
make LuanDomainHandler flexible
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 10 Feb 2019 02:01:49 -0700 |
parents | 55b8210b4ec0 |
children | 11b7e11f9ed5 |
rev | line source |
---|---|
1315 | 1 package luan.modules.http; |
2 | |
3 import luan.webserver.Request; | |
4 import luan.webserver.Response; | |
5 import luan.webserver.Handler; | |
6 import luan.webserver.handlers.DomainHandler; | |
7 import luan.LuanState; | |
8 import luan.LuanTable; | |
9 import luan.LuanCloner; | |
10 import luan.LuanException; | |
1321
307e76ccd0d6
generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents:
1315
diff
changeset
|
11 import luan.modules.logging.LuanLogger; |
1315 | 12 |
13 | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
14 public class LuanDomainHandler implements Handler, DomainHandler.Factory { |
1315 | 15 |
16 private final LuanState luanInit; | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
17 private final DomainHandler domainHandler = new DomainHandler(this); |
1315 | 18 |
19 public LuanDomainHandler(LuanState luanInit) { | |
20 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); | |
21 this.luanInit = (LuanState)cloner.clone(luanInit); | |
22 } | |
23 | |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
24 @Override public Handler newHandler(String domain) { |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
25 LuanState luan = newLuan(domain); |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
26 return new LuanHandler(luan); |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
27 } |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
28 |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
29 protected LuanState newLuan(String domain) { |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
30 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
31 LuanState luan = (LuanState)cloner.clone(luanInit); |
1328 | 32 try { |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
33 LuanLogger.newLoggerRepository(luan); |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
34 LuanTable Http = (LuanTable)luan.require("luan:http/Http.luan"); |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
35 Http.put( "domain", domain ); |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
36 } catch(LuanException e) { |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
37 throw new RuntimeException(e); |
1328 | 38 } |
1329
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
39 return luan; |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
40 } |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
41 |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
42 @Override public Response handle(Request request) { |
5a39b006acd1
make LuanDomainHandler flexible
Franklin Schmidt <fschmidt@gmail.com>
parents:
1328
diff
changeset
|
43 return domainHandler.handle(request); |
1315 | 44 } |
45 } |