package Ġstreams . configuration Ċ Ċ import Ġorg . neo 4 j . kernel . internal . Graph Database API Ċ import Ġorg . neo 4 j . logging . Log Ċ import Ġorg . neo 4 j . logging . internal . Log Service Ċ import Ġorg . neo 4 j . plugin . configuration . Configuration Lifecycle Ċ import Ġorg . neo 4 j . plugin . configuration . Configuration Lifecycle Utils Ċ import Ġorg . neo 4 j . plugin . configuration . EventType Ċ import Ġorg . neo 4 j . plugin . configuration . list ners . Configuration Lifecycle Listener Ċ import Ġstreams . utils . Streams Utils Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ class ĠStreams Config ( trigger Period : ĠInt Ġ= ĠDEFAULT _ TRIGGER _ PERIOD , Ġlog : ĠLog ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġprivate Ġval Ġcache Ġ= ĠConcurrent HashMap < String , ĠStreams Config >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ TRIGGER _ PERIOD : ĠInt Ġ= Ġ 1 0 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS UN _ JAVA _ COMMAND Ġ= Ġ" sun . java . command " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCONF _ DIR _ ARG Ġ= Ġ" config - dir =" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ PATH Ġ= Ġ"." ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Neo 4 j Conf Folder (): ĠString Ġ{ Ġ// Ġsun . java . command = com . neo 4 j . server . enterprise . Com mercial EntryPoint Ġ-- home - dir =/ home / my id / neo 4 j - enterprise - 4 . 0 . 0 - alpha 0 9 mr 0 2 Ġ-- config - dir =/ home / my id / neo 4 j - enterprise - 4 . 0 . 0 - alpha 0 9 mr 0 2 / conf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠSystem . getProperty ( SUN _ JAVA _ COMMAND , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcommand . split ("-- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( String :: trim ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . startsWith ( CONF _ DIR _ ARG ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . substring ( CONF _ DIR _ ARG . length ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () Ġ?: ĠDEFAULT _ PATH ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( db : ĠGraph Database API ): ĠStreams Config Ġ= Ġcache . compute If Absent ( Streams Utils . getName ( db )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStreams Config ( log Ġ= Ġdb . dependency Resolver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve Dependency ( Log Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getUser Log ( Streams Config :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove Instance ( db : ĠGraph Database API ): ĠStreams Config ? Ġ= Ġcache . remove ( Streams Utils . getName ( db )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġconfig Lifecycle : ĠConfiguration Lifecycle ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġne o 4 j Conf Folder Ġ= ĠSystem . getenv (). get OrDefault (" NE O 4 J _ CONF ", Ġget Neo 4 j Conf Folder ()) ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle Ġ= ĠConfiguration Lifecycle ( trigger Period , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ neo 4 j Conf Folder ${ File . separator } streams . conf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , Ġlog , Ġtrue , Ġ" streams .", Ġ" kafka .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Property ( key : ĠString , Ġvalue : ĠAny , Ġsave : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . setProperty ( key , Ġvalue , Ġsave ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Properties ( map : ĠMap < String , ĠAny >, Ġsave : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . set Properties ( map , Ġsave ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Property ( key : ĠString , Ġsave : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . remove Property ( key , Ġsave ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Properties ( keys : ĠCollection < String >, Ġsave : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . remove Properties ( keys , Ġsave ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Configuration (): ĠMutable Map < String , ĠAny > Ġ= ĠConfiguration Lifecycle Utils . toMap ( config Lifecycle . configuration ) ĊĊĠĠĠ Ġfun Ġadd Configuration Lifecycle Listener ( evt : ĠEventType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠConfiguration Lifecycle Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . add Configuration Lifecycle Listener ( evt , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop ( shutdown : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig Lifecycle . stop ( shutdown ) ĊĠĠĠ Ġ} Ċ }