package Ġcom . ge ek be ast . rh iz ome . aws Ċ Ċ import Ġcom . amazonaws . services . s 3 . Amazon S 3 Ċ import Ġcom . amazonaws . services . s 3 . model . List Objects V 2 Request Ċ import Ġcom . amazonaws . services . s 3 . model . List Objects V 2 Result Ċ import Ġjava . util . concurrent . locks . Re entrant Lock Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠMat thew ĠT am ay o - R ios Ġ& lt ; mat thew @ open l attice . com & gt ; Ċ Ġ*/ Ċ class ĠS 3 Object Listing Iterable < T >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġs 3 : ĠAmazon S 3 , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbucket : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfolder Prefix : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmax Keys : ĠInt Ġ= Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdelimiter : ĠString Ġ= Ġ"/", ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapper : Ġ( String ) Ġ-> ĠT Ċ ) Ġ: ĠIterable < T > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠS 3 Object Iterator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs 3 , Ġbucket , Ġfolder Prefix , Ġmax Keys , Ġdelimiter , Ġmapper ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġwill Ġlist Ċ Ġ*/ Ċ class ĠS 3 Object Iterator < T > Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġs 3 : ĠAmazon S 3 , ĊĠĠĠĠĠĠĠ Ġbucket : ĠString , ĊĠĠĠĠĠĠĠ Ġfolder Prefix : ĠString , ĊĠĠĠĠĠĠĠ Ġmax Keys : ĠInt Ġ= Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠ Ġdelimiter : ĠString Ġ= Ġ"/", ĊĠĠĠĠĠĠĠ Ġmapper : Ġ( String ) Ġ-> ĠT Ċ ) Ġ: ĠS 3 Listing Iterator < T >( s 3 , Ġbucket , Ġfolder Prefix , Ġmax Keys , Ġdelimiter , Ġmapper ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġtrim Element ( next Elem : ĠString ): ĠString Ġ= Ġnext Elem . remove Prefix ( folder Prefix ) ĊĠĠĠ Ġoverride Ġfun Ġget Element ( index : ĠInt ): ĠString Ġ= Ġresult . object Sum maries [ index ]. key ĊĠĠĠ Ġoverride Ġfun Ġget Buffer Length (): ĠInt Ġ= Ġresult . object Sum maries . size Ċ }