package Ġcn . tsv ico . common . shiro Ċ Ċ import Ġorg . apache . shiro . spring . web . Sh iro Filter Factory Bean Ċ import Ġorg . apache . shiro . web . filter . m gt . FilterChain Resolver Ċ import Ġorg . apache . shiro . web . filter . m gt . Path Matching FilterChain Resolver Ċ import Ġorg . apache . shiro . web . m gt . Web Security Manager Ċ import Ġorg . apache . shiro . web . servlet . Abstract Sh iro Filter Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . Bean Initialization Exception Ċ Ċ class ĠRest Sh iro Filter Factory Bean Ġ: ĠSh iro Filter Factory Bean () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Rest Sh iro Filter Factory Bean :: class . java ) ĊĠĠĠ Ġoverride Ġfun Ġcreate Instance (): ĠAbstract Sh iro Filter Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug (" Creating ĠSh iro ĠFilter Ġinstance .") ĊĠĠĠĠĠĠĠ Ġval Ġsecurity Manager Ġ= Ġsecurity Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( security Manager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ" Security Manager Ġproperty Ġmust Ġbe Ġset ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBean Initialization Exception ( msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( security Manager Ġ! is ĠWeb Security Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ" The Ġsecurity Ġmanager Ġdoes Ġnot Ġimplement Ġthe ĠWeb Security Manager Ġinterface ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBean Initialization Exception ( msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcreate FilterChain Manager () ĊĊĠĠĠĠĠĠĠ Ġ// Expose Ġthe Ġconstructed ĠFilter Chain Manager Ġby Ġfirst Ġwrapping Ġit Ġin Ġa ĊĠĠĠĠĠĠĠ Ġ// ĠFilter Chain Resolver Ġimplementation . ĠThe ĠAbstract Sh iro Filter Ġimplementations ĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġnot Ġknow Ġabout ĠFilter Chain Managers Ġ- Ġonly Ġresolver s : ĊĠĠĠĠĠĠĠ Ġval Ġchain Resolver : ĠPath Matching FilterChain Resolver Ġ= ĠRest Path Matching FilterChain Resolver () ĊĠĠĠĠĠĠĠ Ġchain Resolver . filter Chain Manager Ġ= Ġmanager ĊĊĠĠĠĠĠĠĠ Ġ// Now Ġcreate Ġa Ġconcrete ĠSh iro Filter Ġinstance Ġand Ġapply Ġthe Ġacquired ĠSecurity Manager Ġand Ġbuilt ĊĠĠĠĠĠĠĠ Ġ// FilterChain Resolver . Ġ ĠIt Ġdoesn 't Ġmatter Ġthat Ġthe Ġinstance Ġis Ġan Ġanonymous Ġinner Ġclass ĊĠĠĠĠĠĠĠ Ġ// here Ġ- Ġwe 're Ġjust Ġusing Ġit Ġbecause Ġit Ġis Ġa Ġconcrete ĠAbstract Sh iro Filter Ġinstance Ġthat Ġaccepts ĊĠĠĠĠĠĠĠ Ġ// injection Ġof Ġthe ĠSecurity Manager Ġand ĠFilter Chain Resolver : ĊĠĠĠĠĠĠĠ Ġreturn ĠSpring Sh iro Filter ( security Manager , Ġchain Resolver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠSpring Sh iro Filter ( web Security Manager : ĠWeb Security Manager ?, Ġresolver : ĠFilter Chain Resolver ?) Ġ: ĊĠĠĠĠĠĠĠ ĠAbstract Sh iro Filter () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( web Security Manager ) Ġ{ Ġ" Web Security Manager Ġproperty Ġcannot Ġbe Ġnull ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecurity Manager Ġ= Ġweb Security Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolver Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Chain Resolver Ġ= Ġresolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }