package Ġcom . ne va . jav are l . communication . rest . impl Ċ Ċ import Ġcom . ne va . jav are l . communication . rest . api . Rest Config Ċ import Ġcom . ne va . jav are l . foundation . api . J av are l Constants Ċ import Ġorg . apache . fel ix . scr . annotations .* Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ Ċ @ Component ( ĊĠĠĠĠĠĠĠ Ġimmediate Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġmet atype Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ"${ J av are l Constants . SERVICE _ PREFIX } ĠREST ĠConfiguration ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Configuration Ġfor ĠREST Ġcomponents ." Ċ ) Ċ @ Service ( Rest Config :: class ) Ċ class ĠJ ersey Rest Config Ġ: ĠRest Config Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠFILTER _ PATHS _ PROP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ"/ bin /( .* )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ" Filter Ġpaths ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Determin es Ġwhich Ġpaths Ġwill Ġnot Ġbe Ġhandled Ġby ĠREST Ġapplication .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun bounded Ġ= ĠProperty Un bounded . ARRAY ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFILTER _ PATHS _ PROP Ġ= Ġ" filter Paths Prop " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprops : ĠMap < String , ĠAny > ĊĊĠĠĠ Ġprivate Ġval Ġ_ filters Ġ= Ġmutable Map Of < String , Ġ( HttpServletRequest ) Ġ-> ĠBoolean >() ĊĊĠĠĠ Ġ@ Activate ĊĠĠĠ Ġprivate Ġfun Ġactivate ( props : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . props Ġ= Ġprops ĊĊĠĠĠĠĠĠĠ Ġfilter Paths . forEach Ġ{ Ġfilter Path Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Filter (" filter Path _$ filter Path ", Ġ{ Ġrequest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest . request URI . matches ( Regex ( filter Path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġval Ġfilter Paths : ĠArray < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġprops [ FILTER _ PATHS _ PROP ] Ġas ĠArray < String >? Ġ?: ĠarrayOf () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġfilters : ĠMap < String , Ġ( HttpServletRequest ) Ġ-> ĠBoolean > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ filters ĊĊĠĠĠ Ġoverride Ġfun Ġregister Filter ( name : ĠString , Ġpredicate : Ġ( HttpServletRequest ) Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ filters . put ( name , Ġpredicate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġunregister Filter ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ filters . remove ( name ) ĊĠĠĠ Ġ} Ċ Ċ }