package Ġcn . bd q fork . kotlin . web . route Ċ Ċ import Ġcn . bd q fork . context . configuration . reader . Resource Reader Ċ import Ġcn . bd q fork . core . exception . Beans Exception Ċ import Ġcn . bd q fork . core . factory . BeanFactory Ċ import Ġcn . bd q fork . core . util . StringUtils Ċ import Ġcn . bd q fork . kotlin . web . constant . ContentType Ċ import Ġcn . bd q fork . kotlin . web . constant . Server Property Ċ import Ġcn . bd q fork . kotlin . web . route . response . Html Response Handler Ċ import Ġcn . bd q fork . kotlin . web . route . response . Response Handler Factory Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . ext . web . common . template . Template Engine Ċ import Ġio . vertx . ext . web . temp l . fre emark er . Free Marker Template Engine Ċ import Ġio . vertx . ext . web . temp l . j ade . J ade Template Engine Ċ import Ġio . vertx . ext . web . temp l . thy me leaf . Th y me leaf Template Engine Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ /** Ċ Ġ* Ġ@ author Ġb dq Ċ Ġ* Ġ@ since Ġ 2 0 2 0 / 2 / 2 1 Ċ Ġ*/ Ċ class ĠTemplate Manager ( private Ġval Ġbean Factory : ĠBean Factory ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¨¡ æĿ¿ å¼ķ æĵ İ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġtemplate Engine : ĠTemplate Engine ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¨¡ æĿ¿ è·¯å¾Ħ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġtemplate Path : ĠString ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¨¡ æĿ¿ ç±»åŀĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġtemplate Type : ĠString ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¨¡ æĿ¿ æĸĩä»¶ åĲİ ç¼Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġsuffix : ĠString ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ å¼ĢåĲ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Enable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Reader Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean Factory . getBean ( Resource Reader :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠBe ans Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Enable Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ TEMPLATE _ ENABLE , ĠBoolean :: class . java , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Enable ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log . is Info Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" template Ġenabled !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Type Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ TEMPLATE _ TYPE , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck (! StringUtils . isEmpty ( template Type )) Ġ{ Ġ" template Ġtype Ġnot Ġset !" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Engine Ġ= Ġcreate Template Engine ( template Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Enable Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ TEMPLATE _ CACHE _ ENABLE , ĠBoolean :: class . java , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . setProperty (" io . vertx . ext . web . common . template . Template Engine . disable Cache ", Ġ(! cache Enable ). toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuffix Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ TEMPLATE _ SUFFIX , ĠString :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck (! StringUtils . isEmpty ( suffix )) Ġ{ Ġ" template Ġsuffix Ġnot Ġset !" Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Path Ġ= Ġresource Reader . read Property ( Server Property . SERVER _ TEMPLATE _ PATH , ĠString :: class . java , ĠDEFAULT _ TEMPLATE _ PATH ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Handler Factory Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbean Factory . getBean ( Response Handler Factory :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠBe ans Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Handler Factory . register Response Handler ( ContentType . HTML , ĠHtml Response Handler ( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Template Engine ( template Type : ĠString ?): ĠTemplate Engine Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvert x Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean Factory . getBean ( Vert x :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠBe ans Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( template Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" fre emark er " Ġ-> ĠFree Marker Template Engine . create ( vertx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" thy me leaf " Ġ-> ĠTh y me leaf Template Engine . create ( vertx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" j ade " Ġ-> ĠJ ade Template Engine . create ( vertx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException ( String . format (" unsupported Ġtype Ġof Ġtemplate Ġ% s !", Ġtemplate Type )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Template Manager :: class . java ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ TEMPLATE _ PATH Ġ= Ġ" template " ĊĠĠĠ Ġ} Ċ Ċ }