package Ġcom . cu up a . mail processor . deleg ates Ċ Ċ import Ġcom . cu up a . mail processor . process . Process Instance Handler Ċ import Ġcom . cu up a . mail processor . services . semantic . Ex tern Semantic Service Ċ import Ġcom . cu up a . mail processor . services . semantic . Metadata Ċ import Ġcom . cu up a . mail processor . services . semantic . Semantic Result Ċ import Ġorg . camunda . bpm . engine . delegate . Delegate Execution Ċ import Ġorg . camunda . bpm . engine . delegate . Java Delegate Ċ Ċ class ĠSemantic Delegate ( private Ġval Ġextern Semantic Service : ĠEx tern Semantic Service ) Ġ: ĠJava Delegate Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( delegate Execution : ĠDelegate Execution ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠProcess Instance Handler ( delegate Execution ) ĊĠĠĠĠĠĠĠ Ġextern Semantic Service . get Semantic Result ( getText ( handler )). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . add Topic ( it . topic Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . sender Ġ= Ġget Sender ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . add MetaData ( it . metaData . filter ( isNot Sender Metadata ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Sender ( semantic Result : ĠSemantic Result ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( semantic Result . sender ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunknown Ġ-> Ġsemantic Result . metaData . first OrNull ( is Sender Metadata ()) ?. value Ġ?: Ġunknown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsemantic Result . sender ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetText ( handler : ĠProcess Instance Handler ) Ġ= Ġhandler . plain Text . join ToString (" Ġ", Ġ"", Ġ"") ĊĠĠĠ Ġprivate Ġfun Ġis Sender Metadata (): Ġ( Metadata ) Ġ-> ĠBoolean Ġ= Ġ{ Ġ" sender " Ġ== Ġit . name Ġ} ĊĠĠĠ Ġprivate Ġfun Ġis Not Sender Metadata (): Ġ( Metadata ) Ġ-> ĠBoolean Ġ= Ġ{ Ġ" sender " Ġ!= Ġit . name Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġunknown Ġ= Ġ" UNKNOWN " ĊĠĠĠ Ġ} Ċ Ċ }