/* Ċ Ġ* ĠJ aval in Ġ- Ġhttps :// jav al in . io Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠDavid ĠÃ ħ se Ċ Ġ* ĠLicensed Ġunder ĠApache Ġ 2 . 0 : Ġhttps :// github . com / tip sy / jav al in / blob / master / LICENSE Ċ Ġ*/ Ċ Ċ package Ġio . jav al in . embedded server . jetty Ċ Ċ import Ġio . jav al in . H alt Exception Ċ import Ġio . jav al in . embedded server . Location Ċ import Ġio . jav al in . embedded server . Static File Config Ċ import Ġio . jav al in . embedded server . Static Resource Handler Ċ import Ġorg . eclipse . jetty . server . Request Ċ import Ġorg . eclipse . jetty . server . handler . Resource Handler Ċ import Ġorg . eclipse . jetty . server . handler . gzip . G zip Handler Ċ import Ġorg . eclipse . jetty . util . resource . Resource Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ class ĠJet ty Resource Handler ( static File Config : ĠList < Static File Config >) Ġ: ĠStatic Resource Handler Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Jet ty Resource Handler :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġhandlers Ġ= Ġstatic File Config . map Ġ{ Ġconfig Ġ-> ĊĠĠĠĠĠĠĠ ĠG zip Handler (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler Ġ= ĠResource Handler (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Base Ġ= ĠgetResource Path ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Dir Allowed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis E tags Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Static Ġfiles Ġenabled : Ġ{$ config }. ĠAbsolute Ġpath : Ġ'${ getResource Path ( config )} '") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetResource Path ( static File Config : ĠStatic File Config ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnos uch dir Ġ= Ġ" Static Ġresource Ġdirectory Ġwith Ġpath : Ġ'${ static File Config . path }' Ġdoes Ġnot Ġexist ." ĊĠĠĠĠĠĠĠ Ġif Ġ( static File Config . location Ġ== ĠLocation . CLAS SPATH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Path Resource Ġ= ĠResource . new Class Path Resource ( static File Config . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( class Path Resource Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( nos uch dir Ġ+ Ġ" ĠDep ending Ġon Ġyour Ġsetup , Ġempty Ġfolders Ġmight Ġnot Ġget Ġcopied Ġto Ġclasspath .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclass Path Resource . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Files . not Exists ( Paths . get ( static File Config . path ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( nos uch dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstatic File Config . path ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle ( httpRequest : ĠHttpServletRequest , ĠhttpResponse : ĠHttpServletResponse ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= ĠhttpRequest . getAttribute (" jetty - target ") Ġas ĠString ĊĠĠĠĠĠĠĠ Ġval Ġbase Request Ġ= ĠhttpRequest . getAttribute (" jetty - request ") Ġas ĠRequest ĊĠĠĠĠĠĠĠ Ġfor Ġ( gzip Handler Ġin Ġhandlers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Handler Ġ= Ġ( gzip Handler . handler Ġas ĠResource Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġresource Handler . getResource ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resource . isFile () Ġ|| Ġresource . isDirectory With Welcome File ( resource Handler , Ġtarget )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Age Ġ= Ġif Ġ( target . startsWith ("/ immutable ")) Ġ 3 1 6 2 2 4 0 0 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhttpResponse . setHeader (" Cache - Control ", Ġ" max - age =$ max Age ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgzip Handler . handle ( target , Ġbase Request , ĠhttpRequest , ĠhttpResponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ġ// Ġit 's Ġfine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Exception Ġoccurred Ġwhile Ġhandling Ġstatic Ġresource ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠH alt Exception ( 4 0 4 , Ġ" Not Ġfound ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠResource ?. isFile () Ġ= Ġthis Ġ!= Ġnull Ġ&& Ġthis . exists () Ġ&& Ġ! this . isDirectory ĊĠĠĠ Ġprivate Ġfun ĠResource ?. isDirectory With Welcome File ( handler : ĠResource Handler , Ġtarget : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ!= Ġnull Ġ&& Ġthis . isDirectory Ġ&& Ġhandler . getResource ( target Ġ+ Ġ" index . html "). exists () Ċ Ċ } Ċ